Saya punya beberapa pseudocode Java yang menggunakan spasi alih-alih kurung kurawal, dan saya ingin Anda mengubahnya.
I / O
Program Anda harus mengambil file input bersama dengan nomor yang menunjukkan berapa banyak ruang yang digunakan untuk membuat blok. Ini sebuah contoh:
$ convert.lang input.p 4 // Konversi menggunakan 4 spasi sebagai pembatas blok $ convert.lang input.p 2 // Konversi menggunakan 2 spasi sebagai pembatas blok
Maka harus mengkonversi hasil menggunakan pembatas blok yang ditentukan dan output hasilnya ke stdout.
Daging program
Blok terbuka dengan :
dan setiap baris dalam blok itu indentasi menggunakan pembatas blok, seperti kode Python.
sementara (benar): System.out.println ("Test");
Masing :
- masing diganti dengan a {
, dan a }
ditambahkan ke ujung blok.
while (true) { System.out.println ("Test"); }
Contohnya
Memasukkan:
Tes kelas publik: public static static utama (String [] args): System.out.println ("Java is verbose ...");
Keluaran:
$ convert Test.pseudojava 4 Tes kelas publik { public static public void (String [] args) { System.out.println ("Java is verbose ..."); } }
Memasukkan:
utama(): printf ("Hello World");
Keluaran:
$ convert test.file 2 main () { printf ("Hello World"); }
Memasukkan:
def generic_op (the_stack, func): # Kode penanganan op generik b = the_stack.pop () jika isinstance (b, daftar): jika b: kembali top = b.pop (0) sementara b: top = func (top, b.pop (0)) the_stack.push (atas) lain: a = the_stack.pop () mengembalikan func (a, b)
Keluaran:
$ convert code.py 4 def generic_op (the_stack, func) { # Kode penanganan op generik b = the_stack.pop () if isinstance (b, list) { jika b { kembali } top = b.pop (0) sementara b { top = func (top, b.pop (0)) } the_stack.push (atas) } lain { a = the_stack.pop () mengembalikan func (a, b) } }
Mencetak gol
Kode dengan jumlah byte terkecil menang!
Jawaban:
Perl, 41 byte
Menghitung shebang sebagai dua, input diambil dari stdin. Argumen baris perintah tidak perlu disediakan. Konteks bersarang yang valid dapat ditentukan (dan dicocokkan) tanpa mengetahui ukuran lekukan.
Regex Break-Down
Contoh Penggunaan
in1.dat
Keluaran
in2.dat
Keluaran
in3.dat
Keluaran
sumber
Python 3,
299265 byteBoom bam pow.
Algoritma yang digunakan:
sumber
Ruby, 70
Menambahkan baris tambahan. Tidak perlu parameter ukuran blok indent.
Jalankan ini dengan
-n0
(ini benar-benar 68 + 2). Terima kasih banyak kepada @primo karena telah menghemat lebih dari selusin byte.sumber
-p0
juga berfungsi untuk ruby (-0
membaca semua input sekaligus,-p
menyimpan stdin ke$_
, dan mencetak otomatis di akhir).x=$<.readlines*''
. Sementara aku melakukan itu,sub!
juga memiliki dua parameter yang berlebihan (bukan dari satu paramater + blok) yang menerima string pengganti, sehingga Anda dapat menggunakan\1
,\2
, dll bukan perlu untuk menggabungkan semuanya.