Walaupun> <> bukan bahasa populer, ini bisa baik untuk bermain golf dan telah digunakan di situs web ini. Itu terinspirasi oleh Befunge dan memiliki beberapa kesamaan dalam instruksinya.
Perintah yang Diperlukan:
> < ^ v
Mengubah arah penunjuk instruksi (kanan, kiri, atas, bawah)
/ \ | _ #
Mirror; pointer akan berubah arah tergantung pada arah yang sudah dimilikinya.
x
Arah acak.
+ - * , %
Penambahan, pengurangan, perkalian, divisi dan modulo, masing-masing. Pops A dan B dari stack, dan mendorong operator B A. Division dengan 0 menimbulkan kesalahan.
0-9 a-f
Dorong nilai yang sesuai ke tumpukan. a = 10, ..., f = 15
=
Pops A dan B dari stack, dan mendorong 1 jika B = A, dan 0 sebaliknya.
)
Lebih besar dari. Pops A dan B dari tumpukan, dan tekan 1 jika B <A
(
Kurang dari. Pops A dan B dari tumpukan, dan mendorong 1 jika B> A
' "
Mengaktifkan string parsing. Penguraian string mendorong setiap karakter yang ditemukan ke tumpukan hingga menemukan kutipan penutup.
!
Melewati instruksi berikut.
?
Melewati instruksi berikut jika puncak tumpukan nol, atau tumpukan kosong. (catatan: ini tidak mengeluarkan apa pun dari tumpukan!)
:
Gandakan nilai teratas pada tumpukan.
~
Menghapus nilai teratas dari tumpukan.
$
Putar nilai 2 teratas pada tumpukan searah jarum jam, masing-masing. (mis. jika tumpukan Anda 1,2,3,4, akan menghasilkan 1,2,4,3) Putar
@
nilai 3 teratas pada tumpukan searah jarum jam, masing-masing. (mis. jika tumpukan Anda 1,2,3,4, akan menghasilkan 1,4,2,3)
&
Pops nilai teratas dari tumpukan dan memasukkannya ke dalam registri. Memanggil & lagi akan mengambil nilai dalam registri dan meletakkannya kembali di tumpukan.
r
Membalik tumpukan.
}
Menggeser tumpukan ke kanan / memutar seluruh tumpukan searah jarum jam (misal 1,2,3,4 menjadi 4,1,2,3
{
Menggeser tumpukan ke kiri / memutar seluruh tumpukan berlawanan arah jarum jam (misal 1,2,3,4 menjadi 2,3,4,1
g
Pops A dan B dari tumpukan, dan mendorong nilai pada B, A dalam kotak kode.
p
Pops A, B, dan C dari tumpukan, dan mengubah nilai pada C, B ke A.
o
Pops dan output sebagai karakter
n
Pops dan output nilai
i
Mengambil satu karakter sebagai input pengguna dan mendorong nilai ASCII ke stack.
;
Berakhir eksekusi
Threading tidak perlu diterapkan, meskipun Anda bisa jika Anda mau.
Jawaban terpendek menang, dalam hal seri, jawaban pertama menang.
Anda dapat menggunakan bahasa apa pun, dan eval diizinkan.
File akan disediakan melalui argumen baris perintah dan akan memiliki .fish
ekstensi.
Anda dapat menggunakan juru bahasa Python resmi sebagai referensi jika diperlukan. Artikel Esolangs Wiki memiliki lebih banyak informasi tentang cara kerja bahasa tersebut, bersama dengan beberapa contoh lainnya.
Kasus uji:
Halo Dunia!
Kode:
"Hello World!"r>?o?<;
Keluaran:
Hello World!
Kode faktorial :
01::nv
:@*:n>84*o$1+
Output (Hingga 5):
1 2 6 24 120
sumber
1 2 6 24 120 720 ...
dan harus seperti apa yang dihasilkan oleh juru bahasa Python juga.l
untuk mendorong panjang tumpukan. Dan sejauh yang saya tahu,?
apakah pop nilai.Jawaban:
APL (Dyalog) (750)
Karena APL tidak benar-benar memiliki baris perintah, muat ini ke dalam ruang kerja (yaitu dengan
)ed F
) dan kemudian jalankan dari garis APL seperti:Itu tidak menangani kesalahan. Perilaku kode yang salah tidak ditentukan. Tidak dapat melakukan utas baik. Di mana halaman Esolang dan konflik pertanyaan, ia mengikuti pertanyaan.
Sunting: versi yang sedikit lebih mudah dibaca dengan komentar dapat ditemukan di sini: https://gist.github.com/anonymous/6428866
sumber
Delphi, 1144
Semua kecuali instruksi pengarahan diimplementasikan.
Kode indentasi dan komentar berbunyi:
Edit riwayat:
(1306 + 18 = 1324): Memperbaiki bug dalam beberapa perintah operasi (Delphi mengevaluasi argumen secara terbalik). Juga memperbaiki tumpukan pop (tidak bisa meletup lebih dari sekali per instruksi).
(1324-33 = 1291): Perlindungan yang dihapus saat menulis konten dari tumpukan kosong
(1291-56 = 1235): Menambahkan fungsi Putar, variabel yang diubah namanya, penurunan digit instruksi
(1235-7 = 1228): Variabel yang disusun ulang, memperbaiki bug di '@'
(1228-37 = 1191): Dibagikan lebih banyak kode implementasi dengan menyebarkannya lebih dari 3 blok kasus berturut-turut
(1191-12 = 1179): Membagikan implementasi stack-cycling antara ketiga instruksi sekarang.
(1179-20 = 1159): Membagi string-parsing lebih dari 3 blok kasus, menghapus variabel j, berbagi implementasi lain
(1159-15 = 1144): Sederhana 'x' dengan mengubahnya menjadi salah satu dari 4 petunjuk arah
sumber
for k in TFile.ReadAllLines(ParamStr(1))do c:=c+k+StringOfChar(' ',80-Length(k));
. Anda juga dapat menyingkirkan half:TextFile
seperti itu, tetapi Anda harus menambahkannyauses IOUtils;
di awal. Perbedaan: membaca semua baris, dan bukan hanya 25 baris pertama.Haskell 1428
Hampir semua karakter huruf kecil digunakan sebagai nama fungsi.
PS Apakah ada game tentang esolang (2d pointer) semacam ini? Mereka pasti sangat lucu!
Contoh Program Ikan
sumber
zip(['0'..'9']++['a'..'f'])[0..15]
seharusnya digunakanzip['0'..'9'][0..9]++zip['a'..'f'][10..15]
. golf yang luar biasa!\q->t$(r q)q
pada dasarnya adalahr>>=t
Python, 978
980981Tidak mendukung threading.
Versi:
1. 981
2. 980:
p
Instruksi tetap ; perbaikan kecil.3. 978:
?
Instruksi tetap .sumber
p
precedure di sini, karena saya tidak begitu mengerti ini> Pops A, B, dan C dari tumpukanp
perintah mengambil tiga nilai terakhir pada stack (muncul mereka),a
b
danc
, dan pihak yang ditunjuk tempatc
,b
di grid kea
. Inilah sebabnya mengapa Anda tidak dapat mengonversi ke kode asli.a=pop();b=pop();c=pop()
atauc=pop();b=pop();a=pop()
?a=pop();b=pop();c=pop()
Delphi,
18551701Versi ini memiliki dukungan utas dengan biaya yang cukup tinggi: Versi tanpa dukungan utas adalah 1144 karakter saat ini, jadi dukungan utas menambah 557 karakter (sekitar 50%)!
Perhatikan bahwa implementasi ini berisi beberapa ide yang akan mengurangi kiriman saya yang lain oleh beberapa lusin karakter (saya akan menerapkannya nanti).
Kode ini menjalankan sampel 'multithreaded hello, world' dengan sempurna, dan sebagian besar sampel lainnya. (Penerjemah saya memberi saya pembagian dengan pengecualian nol saat menjalankan sampel 'e' - adakah yang bisa mengonfirmasi hal ini dengan penerjemah lain> <>?)
Di sini kode indentasi dan komentar:
Edit riwayat:
(1855-154 = 1701): Menerapkan semua gagasan dari versi yang tidak berulir
sumber
procedure _.U(v: Int16);
->procedure _.U;
danprocedure _.T(A, b: Int16);
->procedure _.T;
TextFile
dapat ditulis sebagaiText
, danAssignFile()
sebagaiAssign()
PHP, 2493 byte
Saya tahu bahwa itu telah diimplementasikan dengan ukuran kompiler yang lebih kecil dengan bahasa lain, namun demikian dengan semangat seorang programmer yang tidak pernah berkata-kata, saya telah datang dengan juru bahasa PHP CLI untuk
><> Fish
. Seluruh kode sumber di bawah ini.2 fitur utama dari bahasa pemrograman Fish tidak diterapkan, yaitu:
i
karakter. PHP CLI mengharuskan pengguna untuk menekan<Enter>
tombol untuk memasukkan input ke buffer input.Perhatikan bahwa saya telah menulis dan mengoptimalkan banyak fungsi asli termasuk pembuatan array dengan menggunakan:
dari pada
Program ini dapat diakses melalui antarmuka baris perintah (CLI) menggunakan perintah berikut:
Saya menghabiskan total 6 jam untuk menyelesaikan ini dengan referensi ke penerjemah python asli.
Sumber Asli:
Edit Sejarah
x
sintaksis untuk memilih salah satu arah alih-alih memilih sendiri.p
perintah di manachr()
harus digunakan sebelum memasukkan nilai ke dalam kotak kode.sumber
Lua 1640 (1558 non threading) karakter
Versi pengaliran, golf (1640 karakter):
Versi threading melakukan beberapa hack jahat dengan setfenv dan getfenv untuk menghilangkan kebutuhan pengindeksan untuk utas yang berbeda.
Versi terjemahan dapat dibaca:
Versi nonthreading, golf (1558 karakter, tetapi dapat menyusut sedikit lebih banyak jika versi non-threading akan menjadi kriteria):
Versi yang dapat dibaca:
Tidak menempatkan yang berikutnya sebagai hasil, karena menggunakan kompresi secara langsung bukan tujuan yang saya kira;). Menggunakan murgaLua (atau versi Lua dengan lzlib dan luaSocket (untuk decoding base64)), pada hitungan ajaib 1333:
sumber