Tugas:
Tantangan Anda adalah, diberikan kiriman sebelumnya dan itu sendiri sebagai input, output bahasa yang mereka tulis, dalam format berikut:
Katakanlah program pertama ada di Ruby. Ini harus menampilkan 1
, karena Ruby adalah 1
bahasa pertama yang digunakan dalam tantangan ini. Contoh program adalah:
a=gets
puts 1
Ketika diberikan sendiri sebagai input, ia kembali 1
.
Program selanjutnya mungkin dalam Python. Itu harus keluaran 2
, karena Python adalah 2
bahasa nd yang digunakan dalam tantangan. Contoh program adalah:
print(1 if input()[0]=="a"else 2)
Diberikan submisi pertama, ia menghasilkan 1
, dan dengan sendirinya menghasilkannya 2
.
Anda diperbolehkan mengulangi bahasa, meskipun Anda tidak diizinkan mengirimkan jawaban dalam bahasa jawaban sebelumnya.
Sebagai contoh, jika program ketiga di Ruby, itu harus output 1
diberikan program pertama dan itu sendiri (karena Ruby adalah 1
bahasa pertama yang digunakan), dan mengingat program kedua itu harus di-output 2
.
Aturan:
- Jika ada
n
jawaban saat ini dalam tantangan, setidaknya harus adafloor(n / 3)
bahasa yang berbeda. Setiap pengajuan yang melanggar aturan ini didiskualifikasi. - Tidak ada dua "jawaban tetangga" (mis. Jawaban
n
dan jawabann+1
) tidak dapat menggunakan bahasa yang sama. - Versi bahasa yang berbeda tidak dihitung sebagai bahasa yang berbeda (jadi
Python 2 == Python 3
). - Jawaban harus menerima kiriman sebelumnya secara penuh sebagai masukan.
- Pengajuan pertama harus mendapat masukan.
- Anda tidak diperbolehkan mengirimkan beberapa jawaban sekaligus.
- "Ulangi jawaban" (jawaban yang memiliki kode yang sama persis dengan kiriman sebelumnya) tidak diizinkan.
- Jawaban tidak diizinkan untuk membahas jumlah byte yang dialokasikan dari jawaban itu - lihat "Jumlah byte yang dialokasikan" untuk perincian lebih lanjut.
Byte-count yang dialokasikan:
Untuk setiap nomor jawaban n
, byte-count yang dialokasikan untuk jawaban itu adalah 45 + 5n
.
Pemformatan jawaban:
Format jawaban Anda seperti ini:
# {answer no.}, {language}
{program}
This prints:
- `1` in answer(s) {all answers using 1st language, with links}
- `2` in answer(s) {all answers using 2nd language, with links}
...
{optional explanation}
Untuk daftar jawaban, lakukan ini:
- `1` in answers [1]({link to answer}), [3]({link to answer})...
Mencetak:
Jawaban pertama untuk bertahan setelah 7 hari tanpa pengajuan yang valid setelah itu dinyatakan sebagai pemenang.
sumber
floor(n / 3)
bahasa). Saya menduga ini bukan perilaku yang dimaksudkan.Jawaban:
26. > <> (bahasa 12), 164 byte
Program pertama saya di> <>! Ini 156 karakter, tetapi 164 byte di UTF-8.
Ini mencetak:
1
dengan jawaban 1 , 5 , 7 , 9 , dan 14 (Retina).2
dengan jawaban 2 (Brain-Flak).3
dengan jawaban 3 (APL).4
dengan jawaban 4 , 12 , dan 15 (Javascript).5
dengan jawaban 6 dan 8 (R).6
dengan jawaban 10 , 17 , 20 , 22 , dan 25 (Bash).7
dengan jawaban 11 dan 19 (Mathematica).8
dengan jawaban 13 (Python).9
dengan jawaban 16 (Perl).10
dengan jawaban 18 , 21 , dan 23 (C / C ++).11
dengan jawaban 24 (Zsh).12
dengan jawaban ini (> <>).Cobalah online!
Penjelasan:
Baris pertama adalah jawab # 5. Ia tidak melakukan apa-apa selain mengirim pointer instruksi ke baris bawah.
/
belok kanan ikan, dan karakter^mwfPes{'tc
diletakkan di tumpukan. Satu karakter input dibaca (i
). (Mari kita memanggil karakter iniC
untuk eksposisi.) 2 dimasukkan ke dalam register (2&
). Lalu kita lompat ke awal baris kedua (baris 1) (01.
).Baris ini membandingkan
C
setiap karakter pada stack. SalinanC
disimpan di bagian bawah tumpukan.{
memutar tumpukan begituC
di atas;:
duplikat;}
memutar salinan kembali ke bawah. Kami menambah register (&1+&
) sampai kecocokan ditemukan. (Jadi jikaC
"c", register memegang 3 ketika pertandingan ditemukan; jikaC
adalah "t", register memegang 4, dan seterusnya.) Kemudian kita melompat ke karakter pertama dari nomor baris dalam register (0&.
) .Baris 3 hingga 13 berurusan dengan apa yang harus dilakukan ketika masing-masing
C
adalah c, t, ', {, dll. Penunjuk instruksi bergerak mundur ketika kita melompat; itu mendarat pada karakter pertama dari garis yang diberikan, tetapi setelah melompat itu memajukan tanda centang sebelum mengeksekusi, jadi itu mulai mengeksekusi dari ujung garis akan mundur. Setiap baris mendorong nomor bahasa yang sesuai pada tumpukan, lalu mengirimkan ikan ken
instruksi, yang mencetaknya.^
adalah kasus yang paling rumit, karena pengecut saya sendiri dengan baris pertama dari jawaban ini. Baris 13 membaca input hingga EOF. Kemudian mengarahkan ke baris 15, yang membandingkan panjang tumpukan (l
) hingga 100 (aa*
). Jika lebih panjang ()?
), kami menambah+
b
dan1
mendapatkan 12, bahasa ini; jika tidak, 1 tetap berada di atas tumpukan.sumber
1. Retina , 0 byte
Cobalah online!
Program kosong mencetak
1
ketika diberi input kosong (yaitu dirinya sendiri), karena ia menghitung seberapa sering regex kosong cocok dengan input (yang selalu1+length(input)
).sumber
2. Brain-Flak , 22 byte
Cobalah online!
Ini memeriksa bagian atas tumpukan dan menempatkan satu di tumpukan yang berlawanan jika tidak nol. Ini kemudian menambah dan mengembalikan tumpukan yang berlawanan. Ini membuatnya mengembalikan 1 untuk program kosong dan 2 untuk apa pun.
Karena tumpukan di Brain-Flak default ke nol, program kosong akan memiliki nol di atas tumpukan sementara program lain (kecuali program yang berakhir dengan karakter nol) akan memiliki nilai kebenaran. Ini berarti kita dapat menjalankan program if yang sangat sederhana pada tumpukan input.
sumber
3. APL, 7 byte
Penjelasan:
sumber
10. Bash (+ coreutils) [bahasa 6],
44, 74 byteVersi Tetap (mengembalikan id bahasa)
Catatan: ini mengharapkan baris tambahan, setelah teks program input
sumber
9. Retina (bahasa 1), 20 byte
Cobalah online!
Seperti halnya plannapus, saya memutuskan untuk menulis ulang untuk mengubah keadaan sedikit, yang akhirnya juga memperpendek kode (modifikasi jawaban terakhir saya untuk akun terbaru plannapus akan berakhir sekitar 32 byte, saya kira).
Penjelasan
Seperti jawaban saya yang lain, ini hanya menghitung jumlah berbagai kecocokan regex, tetapi melakukannya dengan lebih efisien:
$
cocok dengan akhir string. Ini selalu berhasil, bahkan jika ada kecocokan hingga akhir string, jadi ini memberi kita dasar1
untuk semua input.}\{
menemukan kecocokan tunggal dalam program kedua (Brain-Flak), membawa jumlah hingga sana2
. Backslash tidak diperlukan untuk melarikan diri tetapi mencegah bagian dari regex ini untuk mencocokkan dirinya sendiri.[:'][^]']
sebenarnya cukup mewah. Satu-satunya tujuan adalah untuk menghitung keduanya'
dalam program APL (bahasa 3) dan tiga:
dalam program JavaScript (bahasa 4), tetapi kita perlu mencegah bagian ini agar tidak cocok dengan dirinya sendiri. Jadi kami juga memastikan bahwa karakter berikutnya adalah tidak'
, juga tidak]
(karena mereka tidak muncul setelah yang kita lakukan ingin mencocokkan, tetapi mereka muncul dalam program ini di sini).'
bagian sebelumnya sudah menyebabkan satu kecocokan dalam program R, jadi kita perlu tiga kecocokan lagi. Substring,1
muncul di keduanya tiga kali, dan tidak ada program lain. Kami mencocokkannya dengan menambahkan batas kata tautologis di antaranya dengan,\b1
untuk mencegah pencocokan lagi.sumber
1
ini hanyalah output default mereka. Saya harus melakukan sesuatu tentang itu dengan jawaban berikutnya.18. C (bahasa 10), 121 byte
Ini adalah standar C89 atau C90. Ini bekerja dengan baik dentang atau gcc di Try It Online.
Ini mencetak:
1
dengan jawaban 1 , 5 , 7 , 9 , dan 14 (Retina).2
dengan jawaban 2 (Brain-Flak).3
dengan jawaban 3 (APL).4
dengan jawaban 4 , 12 , dan 15 (Javascript).5
dengan jawaban 6 dan 8 (R).6
dengan jawaban 10 dan 17 (Bash).7
dengan jawaban 11 (Mathematica).8
dengan jawaban 13 (Python).9
dengan jawaban 16 (Perl).10
dengan jawaban ini (C).Ini adalah driver bash yang menjalankannya dengan 18 jawaban di Coba online!
Setara tidak disatukan (646 byte):
sumber
5. Retina (bahasa 1), 23 byte
Cobalah online! (Menguji semua input yang mungkin.)
Menghitung kecocokan dari berbagai hal di input:
^$
cocok dengan string input, yaitu jawaban pertama sekali.{}
cocok sendiri, yang ada dua di program kedua, dan satu di yang ini.(?![⊂⍴])[⊂-⍴]
cocok dengan karakter dengan poin kode 8834 hingga 9076, eksklusif , yang menemukan tiga kecocokan dalam program ketiga. Kami menggunakan lookahead negatif untuk menghindari ujung kisaran yang cocok dalam program ini.\B=
cocok dengan=
yang tidak didahului oleh karakter kata. Ini cocok dengan empat=
di dalam program keempat, dan tidak cocok dengan=
dalam program ini.sumber
7. Retina (bahasa 1), 27 byte
Cobalah online! (Menguji semua input yang mungkin.)
Modifikasi minor dari jawaban kelima .
\B=
sudah menemukan 4 kecocokan pada jawaban keenam, dan\b5
menemukan kecocokan lain tanpa mencocokkan jawaban lain.sumber
4, JavaScript (ES6), 32 byte
Output 1 untuk input kosong, 2 jika input dimulai dengan
{
, 4 jika dimulai dengans
dan 3 sebaliknya.sumber
s[0]=='{'
dengans[0]>'z'
11. Mathematica [bahasa 7], 53 byte
Fungsi yang tidak disebutkan namanya mengambil daftar karakter sebagai argumennya dan menghasilkan bilangan bulat positif. Cukup cabang pada huruf pertama dari input, menggunakan posisinya dalam string
"^{'sceP"
untuk memutuskan output. Ini memberikan jawaban yang tepat untuk semua pengiriman sebelumnya kecuali program Retina kosong awal dan jawaban Retina terbaru ; kedua kesalahan meludah ini, tetapi output diperbaiki oleh aturan/._@__->1
yang mengubah fungsi yang tidak dievaluasi menjadi1
.sumber
16. Perl (bahasa 9), 94 byte
Cobalah online! (periksa semua jawaban). Output "1234151516748149"
Ini mencetak:
Program memeriksa panjang input dan memetakannya ke distribusi bahasa saat ini.
sumber
6. R (bahasa 5), 61 byte
Cek apa karakter pertama dari input dan pilih output yang sesuai.
Ini dengan demikian mencetak:
1
dengan jawaban 1 dan 5 (Retina).2
dengan jawaban 2 (Brain-Flak).3
dengan jawaban 3 (APL).4
dengan jawaban 4 (Javascript).dan
5
dengan jawaban ini.Pemakaian:
sumber
8. R (bahasa 5), 76 byte
Cek huruf pertama dari input, dan membandingkannya dengan vektor yang mengandung (agar) string kosong,
{
,'
,s
danc
. Kemudian output indeks pertandingan (R indeks berbasis 1) atau 1 jika tidak ada kecocokan.Konsep yang sama dengan jawaban n ° 6 tetapi mencegah jawaban n ° 7 tidak cocok.
Ini mencetak:
1
dengan jawaban 1 , 5 dan 7 (Retina).2
dengan jawaban 2 (Brain-Flak).3
dengan jawaban 3 (APL).4
dengan jawaban 4 (Javascript).dan
5
dengan jawaban 6 dan jawaban ini (R).Jika saya tidak salah, jumlah byte-count untuk jawaban ini adalah 94 byte.
sumber
readline
harus diganti olehreadLines(file("stdin"))
. Yang berarti 16 karakter lagi: jawaban 6 karenanya harus 77 byte (dari 79 diperbolehkan) dan ini menjawab 92 byte (dari 94 diizinkan). Dengan perubahan ini berfungsi pada penerjemah online juga.12. Javascript (bahasa 4), 117 byte
Catatan: Saya mengubah karakter untuk memperbaiki kesalahan yang satu ini.
Periksa huruf pertama dari input, jika c, periksa panjang input.
Output:
sumber
13. Python (bahasa 8), 110 byte
Catatan: Jawaban ini diubah 6 jam setelah diposkan, atas rekomendasi OP.
Ini adalah ide yang sama dengan jawaban 10 (dalam bash), tetapi dalam Python 3. (Pendekatan ini dapat bekerja paling banyak 3 entri sebelum kita kehabisan digit hex.)
Ini mencetak:
1
dengan jawaban 1 , 5 , 7 , dan 9 (Retina).2
dengan jawaban 2 (Brain-Flak).3
dengan jawaban 3 (APL).4
dengan jawaban 4 dan 12 (Javascript).5
dengan jawaban 6 dan 8 (R).6
dengan jawaban 10 (Bash).7
dengan jawaban 11 (Mathematica).8
untuk jawaban ini (Python).Cobalah online! untuk: Jawaban 1 , Jawaban 2 , Jawaban 3 , Jawaban 4 , Jawaban 5 , Jawaban 6 , Jawaban 7 , Jawaban 8 , Jawaban 9 , Jawaban 10 , Jawaban 11 , Jawaban 12 , atau jawaban ini .
sumber
24. Zsh (bahasa 11), 142 byte
Jawaban saya sebelumnya # 18 di C masih berfungsi tidak dimodifikasi untuk semua entri berikutnya ( demo ). Jadi mari kita campur sedikit.
Tujuan dari komentar di akhir adalah untuk mencocokkan panjang jawaban 21 dan 23, dan memastikan bahwa tidak ada karakter tunggal dari hash sha256 atau sha384 yang unik untuk setiap jawaban sejauh ini, menggunakan karakter yang diperiksa oleh jawaban Ly ++ C ++. ;-)
Ini mencetak:
1
dengan jawaban 1 , 5 , 7 , 9 , dan 14 (Retina).2
dengan jawaban 2 (Brain-Flak).3
dengan jawaban 3 (APL).4
dengan jawaban 4 , 12 , dan 15 (Javascript).5
dengan jawaban 6 dan 8 (R).6
dengan jawaban 10 , 17 , 20 , dan 22 (Bash).7
dengan jawaban 11 dan 19 (Mathematica).8
dengan jawaban 13 (Python).9
dengan jawaban 16 (Perl).10
dengan jawaban 18 , 21 , dan 23 (C / C ++).11
dengan jawaban ini (Zsh).Cobalah online!
sumber
14. Retina (bahasa 1), 39 byte
Cobalah online! (Menguji semua input yang valid.)
sumber
15. Javascript (bahasa 4), 108 byte
Golf
sumber
17. Bash (+ coreutils + openssl) (bahasa 6), 103 byte
Golf
Menggunakan teknik yang sama dengan jawaban saya # 10 , tetapi dengan kamus yang disandikan Base64 , bukannya Hex .
Saya telah mengumpulkan file data berikut untuk pengujian:
Uji
sumber
19. Mathematica (bahasa 7), 96 byte
Fungsi tanpa nama mengambil daftar karakter sebagai input dan mengembalikan integer:
1
dengan jawaban 1 , 5 , 7 , 9 , dan 14 (Retina).2
dengan jawaban 2 (Brain-Flak).3
dengan jawaban 3 (APL).4
dengan jawaban 4 , 12 , dan 15 (Javascript).5
dengan jawaban 6 dan 8 (R).6
dengan jawaban 10 dan 17 (Bash).7
dengan jawaban 11 dan jawaban ini (Mathematica).8
dengan jawaban 13 (Python).9
dengan jawaban 16 (Perl).10
dengan jawaban 18 (C).Sejauh ini semua panjang jawaban berbeda, dan mereka bahkan berbeda modulo 59 — karenanya dapat dideteksi dengan bilangan bulat mana di kisaran 33, 34, ..., 91 yang sebangun dengan (mod 59). Ini semua adalah karakter ASCII yang dapat dicetak, disandikan oleh string
";NRU$ Q B [1: =L J, 5% 3 # >"
; menggunakanToCharacterCode@StringSplit@
mengubah string ini menjadi daftar sepuluh daftar bilangan bulat dalam rentang itu, danPosition[...,Mod[Length@#,59,33]][[1,1]]
menemukan mana dari sepuluh sublists yang cocok dengan panjang input yang dimodifikasi.sumber
20. Bash (+ coreutils + openssl) (bahasa 6), 121 byte
Golf
Metode yang sama dengan jawaban saya # 17 (yang pada gilirannya didasarkan pada jawaban asli saya # 10 ).
Karena kami memiliki 10 bahasa yang berbeda sekarang, saya telah beralih ke pengkodean posisi heksadesimal.
Data
Tes (keluaran)
sumber
23. C (gcc) (bahasa 10), 142 byte
Cobalah online!
1
dengan jawaban 1 , 5 , 7 , 9 , dan 14 (Retina).2
dengan jawaban 2 (Brain-Flak).3
dengan jawaban 3 (APL).4
dengan jawaban 4 , 12 , dan 15 (Javascript).5
dengan jawaban 6 dan 8 (R).6
dengan jawaban 10 , 17 , 20 dan 22 (Bash).7
dengan jawaban 11 dan 19 (Mathematica).8
dengan jawaban 13 (Python).9
dengan jawaban 16 (Perl).10
dengan jawaban 18 , 21 dan jawaban ini (C).Program ini menghitung jumlah karakter yang berbeda (dalam ASCII, sehingga multi-byte karakter UTF-8 dapat dipecah menjadi beberapa entri) dan kemudian mengikuti pohon keputusan yang dirancang dengan hati-hati, berdasarkan pada jumlah kemunculan karakter ini atau itu.
Pohon keputusan tidak berubah dari # 21 (yay!). Saya tidak diizinkan memposting kode yang persis sama, jadi kami kembali ke pure C dengan sedikit modifikasi.
sumber
21. C ++ (gcc) (bahasa 10 sebagai varian C), 142 byte
Cobalah online!
1
dengan jawaban 1 , 5 , 7 , 9 , dan 14 (Retina).2
dengan jawaban 2 (Brain-Flak).3
dengan jawaban 3 (APL).4
dengan jawaban 4 , 12 , dan 15 (Javascript).5
dengan jawaban 6 dan 8 (R).6
dengan jawaban 10 , 17 dan 20 (Bash).7
dengan jawaban 11 dan 19 (Mathematica).8
dengan jawaban 13 (Python).9
dengan jawaban 16 (Perl).10
dengan jawaban 18 dan jawaban ini (C).Program ini menghitung jumlah karakter yang berbeda (dalam ASCII, sehingga multi-byte karakter UTF-8 dapat dipecah menjadi beberapa entri) dan kemudian mengikuti pohon keputusan yang dirancang dengan hati-hati, berdasarkan pada jumlah kemunculan karakter ini atau itu.
Trivia : huruf K tidak digunakan sampai entri ini. Surat I, E, Y, j, k, q, z tetap tidak digunakan.
sumber
22. Bash (+ coreutils) [bahasa 6],
123, 131 byteEDIT: Diterbitkan versi yang salah pada awalnya, harus diperbaiki sekarang.
Golf
Teknik yang sama dengan jawaban saya # 20, # 17 dan # 10 .
Data
Uji Coba
sumber
44
?25. Bash (bahasa 6), 169 byte
Teknik yang sama dengan jawaban saya # 22, # 20, # 17 dan # 10 .
Maaf @ Qwerp-Derp! ;) Saya berjanji ini adalah yang terakhir :)
Golf
Data
Output Uji
sumber