Adoro BATCH, nonostante la sua scioccante mancanza di comandi funzionali, nonostante la mancanza di supporto non intero. Perché? Perché funziona:
SET var=SET
%var% i=0
Ciò valuterebbe a:
SET var=SET
SET i=0
Fantastico, vero? Ho usato questa tecnica in un programma BATCH prima, perché salva byte!
La tua sfida, se la accettassi, sarebbe quella di "golfare" i programmi BATCH in questo modo. Devi ridurre la dimensione dei byte di un programma BATCH di input includendo SET
istruzioni che valuterebbero parti del programma e in nessun altro modo modificare il programma. (Ciò non consente, per esempio, di rinominare un nome di variabile in qualcosa di più breve. Tieni presente che BATCH, a parte le variabili, non distingue tra maiuscole e minuscole.) Il tuo punteggio viene calcolato come segue:
score = # of characters in your program + 5*(net result bytes in test cases below)
Mi riservo il diritto di aggiungere altri casi di test, in modo da scoraggiare il lavoro per ottimizzare il programma per i casi di test.
Per il bene di questa sfida, le vostre SET
affermazioni non possono contenere caratteri di controllo ( |
, <
, >
, %
) o le interruzioni di linea. Non è possibile modificare il codice se non per spostare parti di codice all'interno di un'istruzione set. (Cioè, non puoi rimuovere spazi bianchi non necessari, sostituirli EQU
con ==
, ecc.) Assumeremo che le linee finiscano con \n
.
Casi test
Ogni caso di test si trova in un blocco di codice separato e ogni caso di test è autonomo, il che significa che dovresti giocare a golf solo assumendo ciò che viene dato al suo interno. (Vale a dire, se sei SET d=SET
in un programma, quella dichiarazione non sarà data automaticamente a nessun altro programma). Ogni risultato di esempio può essere trovato dopo ogni caso di test. C'è una linea tra i casi di test.
@ECHO OFF Incremento SET = 10 :ciclo continuo IF% incremento% EQU 0 Fine GOTO ECHO% incremento% SET / A% incremento% - = 1 Ciclo GOTO :fine USCITA
@ECHO OFF SET / p INPUT = Immettere qui l'ingresso: SET R =% 1 ECHO Ultimo carattere di input qui:% R: ~ -1%
@ECHO OFF Incremento SET = 10 : e GOTO f ECHO f : f GOTO g ECHO g : g GOTO h ECHO h : h GOTO i ECHO i :io GOTO j ECHO j : j IF 3 == 4 (ECHO 4) ELSE (ECHO 5) IF 5 == 3 (GOTO l) ELSE (GOTO k) :K ECHO Fatto. ECHO BATCH OUT !! USCITA : l GOTO g
ECHO Ciao, Ciao, Ciao, ciao, ciao, ciao, ciao !, ciao, ciao !, Lello.
Esempi di output:
@ECHO OFF Incremento SET = 10 :ciclo continuo IF% incremento% EQU 0 Fine GOTO ECHO% incremento% SET / A% incremento% - = 1 Ciclo GOTO :fine USCITA(0 byte salvati)
@ECHO OFF SET% i% = inserisci qui: SET / p INPUT = Inserisci% i% SET R =% 1 ECHO Ultimo carattere di% i %% R: ~ -1%(3 byte acquisiti)
@ECHO OFF Incremento SET = 10 SET g = GOTO SET e = ECHO : e % G% f % E% f : f % G g% %per esempio : g % G% h % E% h : h % G% i %% I E :io % G j% % E% j : j IF 3 == 4 (% e% 4) ELSE (% e% 5) IF 5 == 3 (% g% l) ELSE (% g% k) :K % E% Fatto. % e% FUORI BATCH !! USCITA : l % G g%(10 caratteri salvati)
SET% h% = ciao, ECHO H% h% H% h% H% h% h% h% h% h% H% h% Ciao !, h% h% ciao !, Lello.(1 carattere salvato)
AAA %increment%
→ set a=increment¶AAA %%a%%
non è valido e AAA %1 BBB %2
→ set a= BBB ¶AAA %1%a%%2
è valido. (iirc) Quindi devi formalizzarlo. ( ¶
rappresenta una nuova riga)
@
prima che SET
) l'output estraneo sia accettabile dal programma golf?