Tamsayı olmayan destek olmamasına rağmen, şok edici işlevsel komutlar olmamasına rağmen BATCH'ı seviyorum. Niye ya? Çünkü bu işe yarıyor:
SET var=SET
%var% i=0
Bu değerlendirir:
SET var=SET
SET i=0
Harika, değil mi? Bu tekniği daha önce bir BATCH programında kullandım , çünkü bayt kazandırıyor!
Zorluk, kabul ederseniz, BATCH programlarını bu şekilde "golf" yapmak olacaktır. Programın SET
bölümlerini değerlendirecek ifadeleri dahil ederek ve başka hiçbir şekilde programı değiştirmeyen ifadeleri dahil ederek bir giriş BATCH programının bayt boyutunu küçülteceksiniz . (Bu, bir değişken adını daha kısa bir şeye yeniden adlandırmayı reddeder. Değişkenlerin dışında BATCH'nin büyük / küçük harfe duyarsız olduğunu unutmayın.) Puanınız şöyle hesaplanır:
score = # of characters in your program + 5*(net result bytes in test cases below)
Programı, test senaryoları için optimize etmek için çalışmayı caydırmak amacıyla daha fazla test vakası ekleme hakkını saklı tutarım.
Bu meydan okuma aşkına, SET
tablolar kontrol karakterleri (içeremez |
, <
, >
, %
) ya da linebreaks. Bir set ifadesinin içindeki kod parçalarını taşımaktan başka bir kodu değiştiremezsiniz. (Kendisine, değiştirmek, gereksiz boşluk kaldırmayabilir EQU
ile ==
Biz hatları ile sona varsayar, vs.) \n
.
Test durumları
Her test durumu ayrı bir kod bloğundadır ve her test durumu kendi içindedir; yani yalnızca içinde ne verildiğini varsayarak golf oynamanız gerektiği anlamına gelir. (Yani, eğer SET d=SET
bir programdaysanız, bu ifade otomatik olarak başka bir programa verilmeyecektir). Her örnek sonucu her test durumundan sonra bulabilirsiniz. Test durumları arasında bir çizgi var.
@EKO KAPALI SET artışı = 10 : döngü EĞER% artış% EQU 0 GOTO % ECHO% artış SET / A% artış% - = 1 GOTO döngüsü :son ÇIKIŞ
@EKO KAPALI SET / p INPUT = Buraya girişi girin: SET R =% 1 ECHO Buraya girişin son karakteri:% R: ~ -1%
@EKO KAPALI SET artışı = 10 : e GOTO f ECHO f : f GOTO g Eko g .g GOTO h ECHO h : h GOTO EKO ben :ben GOTO j ECHO j : j EĞER 3 == 4 (ECHO 4) ELSE (ECHO 5) 5 ise == 3 (GOTO l) ELSE (GOTO k) : k ECHO Yapıldı. ECHO BATCH OUT! ÇIKIŞ : l GOTO g
ECHO Merhaba, Merhaba, Merhaba, merhaba, merhaba, Merhaba, Merhaba !, merhaba, ello !, Lello.
Örnek çıktılar:
@EKO KAPALI SET artışı = 10 : döngü EĞER% artış% EQU 0 GOTO % ECHO% artış SET / A% artış% - = 1 GOTO döngüsü :son ÇIKIŞ(0 bayt kaydedildi)
@EKO KAPALI SET% i% = buraya giriş: SET / p INPUT =% i% yaz SET R =% 1 ECHO% i% char'in karakter sayısı R: ~ -1%(3 bayt kazanıldı)
@EKO KAPALI SET artışı = 10 SET g = GOTO SET e = ECHO : e % G% f % E% f : f % G% g %Örneğin .g % G% h % E% h : h % G% ı % E% ı :ben % Gr,% j % E% j : j EĞER 3 == 4 (% e% 4) ELSE (% e% 5) EĞER 5 == 3 (% g% l) ELSE (% g% k) : k % E% yapılan. % e% BATCH OUT! ÇIKIŞ : l % G% g(10 karakter kaydedildi)
SET% h% = ello, ECHO H% h% H% h% H% h% h% h% h% h% h% H% h% Merhaba !, h% h% ello !, Lello.(1 karakter kaydedildi)
AAA %increment%
→ set a=increment¶AAA %%a%%
geçersiz ve AAA %1 BBB %2
→ set a= BBB ¶AAA %1%a%%2
geçerli. (iirc) Yani resmileştirmelisin. ( ¶
yeni bir satırı temsil eder)
@
önce olmadığı için ek çıktı üretir SET
) olduğu gibi, golf programından çıkarılan harici çıktı?