Saya suka BATCH, meskipun tidak ada perintah fungsional yang mengejutkan, meskipun karena kurangnya dukungan non-integer. Mengapa? Karena ini berfungsi:
SET var=SET
%var% i=0
Ini akan mengevaluasi untuk:
SET var=SET
SET i=0
Fantastis, bukan? Saya telah menggunakan teknik ini dalam program BATCH sebelumnya, karena menghemat byte!
Tantangan Anda, seandainya Anda menerimanya, adalah melakukan "golf" program BATCH dengan cara ini. Anda harus mengurangi ukuran byte dari program BATCH input dengan memasukkan SET
pernyataan yang akan mengevaluasi bagian-bagian dari program, dan tidak ada cara lain memodifikasi program. (Ini melarang, misalnya, mengganti nama nama variabel menjadi sesuatu yang lebih pendek. Ingatlah bahwa BATCH, selain dari variabel, tidak peka huruf besar-kecil.) Skor Anda dihitung sebagai berikut:
score = # of characters in your program + 5*(net result bytes in test cases below)
Saya berhak untuk menambahkan lebih banyak test case, sehingga mencegah bekerja untuk mengoptimalkan program untuk case test.
Demi tantangan ini, Anda SET
pernyataan tidak dapat berisi karakter kontrol ( |
, <
, >
, %
) atau linebreaks. Anda tidak boleh memodifikasi kode selain untuk memindahkan potongan kode di dalam pernyataan yang ditetapkan. (Yaitu, Anda tidak boleh menghapus spasi kosong yang tidak perlu, ganti EQU
dengan ==
, dll.) Kami akan menganggap bahwa garis diakhiri dengan \n
.
Uji kasus
Setiap test case berada dalam blok kode yang terpisah, dan setiap case test mandiri, artinya Anda harus bermain golf hanya dengan asumsi apa yang diberikan di dalamnya. (Yaitu, jika Anda SET d=SET
dalam satu program, pernyataan itu tidak akan secara otomatis diberikan ke program lain). Setiap contoh hasil dapat ditemukan setelah setiap test case. Ada garis antara kasus uji.
@ECHO MATI SET kenaikan = 10 : loop JIKA% bertambah% EQU 0 GOTO akhir ECHO% kenaikan% SET / A% kenaikan% - = 1 GOTO loop :akhir KELUAR
@ECHO MATI SET / p INPUT = Masukkan input di sini: SET R =% 1 Masukan terakhir dari ECHO:% R: ~ -1%
@ECHO MATI SET kenaikan = 10 : e GOTO f ECHO f : f GOTO g ECHO g : g GOTO h ECHO h : h GOTO i ECHO saya :saya GOTO j ECHO j : j JIKA 3 == 4 (ECHO 4) ELSE (ECHO 5) JIKA 5 == 3 (GOTO l) ELSE (GOTO k) : k ECHO Selesai. ECHO BATCH OUT !! KELUAR : l GOTO g
ECHO Halo, Halo, Halo, Halo, Halo, Halo, Halo !, Halo, Ello !, Lello.
Output contoh:
@ECHO MATI SET kenaikan = 10 : loop JIKA% bertambah% EQU 0 GOTO akhir ECHO% kenaikan% SET / A% kenaikan% - = 1 GOTO loop :akhir KELUAR(0 byte disimpan)
@ECHO MATI SET% i% = masukan di sini: SET / p INPUT = Masukkan% i% SET R =% 1 ECHO Karakter terakhir dari% i %% R: ~ -1%(3 byte diperoleh)
@ECHO MATI SET kenaikan = 10 SET g = GOTO SET e = ECHO : e % g% f % e% f : f % g% g %misalnya : g % g% h % e% h : h % g% i % e% i :saya % g% j % e% j : j JIKA 3 == 4 (% e% 4) ELSE (% e% 5) JIKA 5 == 3 (% g% l) ELSE (% g% k) : k % e% Selesai. % e% BATCH OUT !! KELUAR : l % g% g(10 karakter tersimpan)
SET% h% = ello, ECHO H% h% H% h% H% h% h% h% h% h% H% h% Halo !, h% h% ello !, Lello.(1 karakter disimpan)
AAA %increment%
→set a=increment¶AAA %%a%%
tidak valid, danAAA %1 BBB %2
→set a= BBB ¶AAA %1%a%%2
valid. (iirc) Jadi Anda perlu memformalkannya. (¶
mewakili baris baru)@
sebelumSET
) apakah output asing dapat diterima dari program golf?Jawaban:
Java 8, Java 10 ,
3884799/795 program + 484 output =43681283/1279 totalAda dua batasan kode ini:
Tapi hei - ada pro!
Kode ini berfungsi lebih baik daripada contoh yang diberikan oleh penulis tantangan.
Versi golf ini dibuat oleh Kevin .
Java 8
Cobalah online!
Java 10
Cobalah online! .
Versi asli
Ini sama sekali bukan golf, saya hanya ingin bersenang-senang, bukan untuk menderita. Jika Anda, pembaca yang budiman, ingin memberikan jawaban ini, silakan lakukan.
Contoh output:
Cobalah online!
sumber
import java.util.*
.