Ini adalah tantangan yang sangat sederhana.
Bahasa lelucon InterpretMe terdiri dari satu perintah; *
, yang menyebabkan program untuk mengambil input dari program InterpretMe dan menjalankannya.
Program InterpretMe akan menafsirkan sebanyak mungkin program InterpretMe yang ada *
di input.
Tujuan Anda adalah membuat program yang menginterpretasikan InterpretMe dalam sesedikit mungkin byte.
Memasukkan
Input akan terdiri dari string ASCII satu baris, string unicode utf-8 jika Anda benar-benar menginginkannya, atau pengkodean karakter apa pun yang digunakan bahasa Anda, jika Anda menginginkannya sebanyak itu. String ini dapat dimasukkan pada awal, atau pada awal setiap proses interpreter InterpretMe. Jika mereka semua dimasukkan pada awal, program harus menampilkan setiap baris program saat memulai.
Keluaran
Dalam tantangan ini, tidak akan ada output kecuali pilihan satu input dipilih, jika tidak hanya terminasi dan non-terminasi
Kasus uji tidak terdiri dari input dan output, tetapi input dan terminasi. Baris baru menunjukkan input baru untuk ditafsirkan sebagai InterpretMe.
Jika menggunakan satu input di awal, ini bisa dianggap apa yang dikeluarkan ketika program ini diinput, diikuti oleh garis tidak aktif (tidak melakukan apa-apa).
1. * (executes input as an interpret me program, finishes)
2. * (^same)
3. ** (executes input as an interpret me program, then does this again after the first program is done, finishes)
4. hi (nothing, first star of previous line finishes)
5. ** (same as the other two star line)
6. hi (nothing, first star of previous line finishes)
7. hi (nothing, second star of line 5 finishes, so second star of line 3 finishes, so line 2 finishes, so line one finishes)
[termination] (not outputted)
hi (does nothing and finishes)
[termination]
*hi (executes inputted program, finishes)
*yo (executes inputted program, finishes)
hey (nothing)
[termination]
Sekali lagi, ini adalah kode-golf , jadi lebih sedikit byte lebih baik
Jawaban:
05AB1E , 11 byte
Kode:
Penjelasan:
Menggunakan pengkodean CP-1252 . Coba online? .
sumber
Python 3, 35 byte
set i to one, tambahkan jumlah '*' -1 ke i
Saya pikir saya bisa mengurangi ini dengantidak bisa saya lakukan~
tipu daya yangsumber
Python 3,
3938 byteDisimpan 1 byte berkat @atlasologist
sumber
f=->f()for c in prompt()when c=='*'
(saya tidak ingin membuat jawaban lain karena ini adalah salinan langsung dari Anda)def f()
bukanf=lambda
).Ruby, 29 byte
Variabel ajaib Ruby
$.
melacak jumlah baris yang dibaca dari stdin. Tetap baca input saat angka ini lebih rendah dari jumlah tanda bintang (ditambah 1 awal).sumber
JavaScript,
534544 byteProgram ini agak mengganggu untuk digunakan karena kurangnya I / O JavaScript yang baik.
Meminta program, lalu meminta program lain untuk setiap
*
program input.sumber
Java hanya
45 60 101 10099 byteMembalikkan kode-golf: D. Saya perhatikan bahwa saya salah membaca spesifikasi (dua kali), tetapi sekarang seharusnya berfungsi. Tampaknya cukup sederhana, mungkin ada cara yang lebih baik untuk menulis ini sebagai ungkapan lamda.
Kecurangan busuk hanya 17 byte!
Versi ini akan menerima input melalui pengetikan yang sangat cepat
sumber
if(b=='*')
dapat di-golf hinggaif(b==42)
-1 byte. Dannew Java.util.Scanner(
harus dengan huruf kecilj
. +1 untuk bagian kode golf terbalik. ;)for(int b:a)
menyimpan byte tambahan, jadi kurang dari 100 byte untuk tidak melakukan apa pun: DMathematica, 38 byte
sumber
APL, 15 byte
Uji:
Penjelasan:
sumber
Perl, 33 byte
Menghitung berapa kali * yang terjadi pada input dan menambahkan itu ke berapa kali loop. Saya merasa harus ada cara untuk melakukan decrementing pada langkah yang sama dengan incrementing tetapi saya tidak bisa mengetahuinya.
sumber