Uwielbiam BATCH, pomimo szokującego braku komend funkcjonalnych, nawet ze względu na brak obsługi liczb całkowitych. Czemu? Ponieważ to działa:
SET var=SET
%var% i=0
Oznaczałoby to:
SET var=SET
SET i=0
Fantastycznie, prawda? Wcześniej stosowałem tę technikę w programie BATCH , ponieważ oszczędza ona bajty!
Twoim wyzwaniem, jeśli je zaakceptujesz, będzie zagranie w ten sposób w programy BATCH „golf”. Masz zmniejszyć rozmiar bajtu wejściowego programu BATCH, włączając SET
instrukcje, które będą oceniać na części programu, i w żaden inny sposób nie modyfikują programu. (To wyklucza, powiedzmy, zmianę nazwy zmiennej na coś krótszego. Pamiętaj, że BATCH, oprócz zmiennych, nie uwzględnia wielkości liter.) Twój wynik jest obliczany w następujący sposób:
score = # of characters in your program + 5*(net result bytes in test cases below)
Zastrzegam sobie prawo do dodawania kolejnych przypadków testowych, aby zniechęcić do pracy nad optymalizacją programu dla przypadków testowych.
Przez wzgląd na to wyzwanie, Twoje SET
wypowiedzi nie może zawierać znaków sterujących ( |
, <
, >
, %
) lub linebreaks. Nie możesz modyfikować kodu poza przenoszeniem fragmentów kodu w instrukcji set. (To znaczy, że nie może usunąć niepotrzebne spacje, należy wymienić EQU
z ==
, itd.) Zakładamy, że linie kończą \n
.
Przypadki testowe
Każdy przypadek testowy znajduje się w osobnym bloku kodu, a każdy przypadek testowy jest samodzielny, co oznacza, że powinieneś grać w golfa, zakładając, co jest w nim zawarte. (Tj. Jeśli jesteś SET d=SET
w jednym programie, to oświadczenie nie zostanie automatycznie przekazane żadnemu innemu programowi). Każdy przykładowy wynik można znaleźć po każdym przypadku testowym. Między przypadkami testowymi istnieje granica.
@ECHO OFF Krok przyrostu = 10 :pętla JEŚLI% przyrost% EQU 0 GOTO koniec ECHO% przyrost% SET / A% przyrost% - = 1 Pętla GOTO :koniec WYJŚCIE
@ECHO OFF SET / p INPUT = Tutaj wprowadź dane wejściowe: SET R =% 1 ECHO Ostatni znak wprowadzania tutaj:% R: ~ -1%
@ECHO OFF Krok przyrostu = 10 :mi GOTO f ECHO f :fa GOTO g ECHO g :sol GOTO godz ECHO godz : h GOTO i ECHO i :ja GOTO j ECHO j :jot JEŻELI 3 == 4 (ECHO 4) ELSE (ECHO 5) JEŻELI 5 == 3 (GOTO l) ELSE (GOTO k) : k ECHO Gotowe. ECHO BATCH OUT !! WYJŚCIE : l GOTO g
ECHO Cześć, cześć, cześć, cześć, cześć, cześć, cześć !, cześć, ello !, Lello.
Przykładowe wyniki:
@ECHO OFF Krok przyrostu = 10 :pętla JEŚLI% przyrost% EQU 0 GOTO koniec ECHO% przyrost% SET / A% przyrost% - = 1 Pętla GOTO :koniec WYJŚCIE(0 bajtów zapisanych)
@ECHO OFF SET% i% = wprowadź tutaj: SET / p INPUT = Wpisz% i% SET R =% 1 ECHO Ostatni znak% i %% R: ~ -1%(3 zdobyte bajty)
@ECHO OFF Krok przyrostu = 10 ZESTAW g = GOTO SET e = ECHO :mi % g% f % e% f :fa % g% g %na przykład :sol % g% h % e% h : h %żołnierz amerykański % e% i :ja % g% j % e% j :jot JEŻELI 3 == 4 (% e% 4) ELSE (% e% 5) JEŻELI 5 == 3 (% g% l) ELSE (% g% k) : k % e% Gotowe. % e% WYPALENIE !! WYJŚCIE : l % g% g(10 znaków zapisanych)
ZESTAW% h% = ello, ECHO H% h% H% h% H% h% h% h% h% h% H% h% Witaj !, h% h% ello !, Lello.(1 znak zapisany)
AAA %increment%
→ set a=increment¶AAA %%a%%
jest nieprawidłowy, a AAA %1 BBB %2
→ set a= BBB ¶AAA %1%a%%2
jest ważny. (iirc) Więc musisz to sformalizować. ( ¶
reprezentuje nowy wiersz)
@
przed nim SET
), czy obce wyjście jest dopuszczalne z programu golfowego?