Tantangan Code-Bowling
Tulis program atau fungsi yang menghasilkan output yang sama, tidak peduli bagaimana Anda mengatur ulang kode sumber. (Output tidak bisa menjadi kesalahan)
Skor Pangram
Skor Anda adalah jumlah karakter unik dalam kode sumber Anda.
Suatu program dengan kode sumber
AJB
akan memiliki skor3
Suatu program dengan kode sumberAAJ
akan memiliki skor dari2
Suatu program dengan kode sumber111
akan memiliki skor1
Ini adalah varian kode-bowling . Program dengan skor tertinggi menang!
(Untuk kenyamanan Anda, alat penilaian otomatis telah dibuat di sini )
Aturan Tantangan
Input
Program / fungsi dapat mengambil input, itu sepenuhnya opsional.Output Output
ini dapat berupa apa saja yang Anda inginkan, tetapi harus non-nil, non-null, non-kosong, dan non-kesalahan. (Untuk itu output harus minimal 1 byte)- Pengaturan Ulang
Tidak peduli bagaimana kode sumber diatur ulang, hasilnya harus sama.
Contoh:
Program:ABJ
outputhello world
, seperti halnya program: [AJB
,JAB
,JBA
, dll]
Ini adalah varian kode-bowling . Program dengan jumlah karakter terbanyak akan menang!
sumber
0
selamanya?)Jawaban:
Bahasa, 1.112.064 poin jika UTF-8
Program saya terdiri dari setiap karakter UTF-8 yang memungkinkan. Mencetak "Hello world", dan menggunakan ruang 1,75 * 1076 yottabytes.
(Untuk menghasilkan program, Anda hanya perlu membuat file dengan 17498005810995570277424757300680353162371620393379153004301136096632219477184361459647073663110750484 karakter, memastikan bahwa setiap karakter UTF-8 yang mungkin ada dalam file)
sumber
Banyak bahasa, 2 poin
Menghasilkan
0.0
sebagai0.
atau.0
. Membutuhkan parsing angka liberal yang OK dengan titik desimal di awal atau akhir, dengan asumsi 0 untuk bagian integral atau desimal yang hilang.0000000.
akan memberikan skor yang sama.Ini juga berfungsi dalam bahasa berikut (dalam beberapa kasus dengan output yang berbeda, seperti yang ditunjukkan):
ans = 0
)ans = 0
)0
)0
)0
)Untuk Python, saya pikir ini adalah satu-satunya cara untuk mendapatkan skor di atas 1, karena kemungkinan bisa habis.
[](){}
membutuhkan pertandingan dan akan gagal jika yang pertama datang,
tidak bisa menjadi karakter pertama#
pertama ditempatkan akan berkomentar semuanya dan menghasilkan bukan output\
adalah kelanjutan garis yang tidak valid$
,!
,?
, Dan@
tidak dapat digunakan tanpa karakter tidak dapat digunakan lainnyaIni daun huruf, angka,
_
,.
, dan kutipan._
membuat nama variabel, yang beberapa permutasi selalu tidak ada.Digit daun dan
.
. Membubuhkan digit yang berbeda memberikan angka yang berbeda kecuali semua digit itu0
. Jadi, saya pikir nol dan.
satu-satunya cara untuk mendapatkan skor di atas1
. Tapi, saya tidak mengenal Python lexer dengan baik, jadi saya bisa melewatkan sesuatu.sumber
CJam , skor 15
Cobalah online!
Selalu dicetak
0000
:0
hanya menekan nol.T
,U
,V
Adalah variabel yang pra-dijalankan ke nol.L
,M
,O
,Q
,R
Adalah variabel yang pra-dijalankan ke daftar kosong, sehingga mereka tidak muncul dalam output.[
dan]
mungkin atau mungkin tidak membungkus hal-hal dalam daftar, tetapi mereka tidak harus dicocokkan dengan benar dan hasilnya rata untuk dicetak.q
membaca input yang kosong dan karenanya tidak muncul di output juga.sumber
r
ditambahkan untuk mencapai sesuatu yang mirip dengan huruf kecilq
?MATL ,
356 poinGagasan untuk menambah spasi diambil dari jawaban Bijan .
Kode, atau permutasi apa pun darinya, mengeluarkan tiga yang dipisahkan oleh baris baru.
Cobalah online!
Penjelasan
l
secara default mendorong nomor satu ke tumpukan.1
melakukan hal yang sama.T
dorongantrue
, yang ditampilkan sebagai nomor satu.v
menggabungkan seluruh tumpukan sejauh ini menjadi vektor kolom. Jadi misalnyav
setelahT
akan menggabungkan dua angka pertama menjadi kolom (dan kemudian nomor berikutnya akan didorong). Inisialv
akan menghasilkan array kosong.Di akhir kode, tumpukan ditampilkan secara implisit, dengan aturan berikut:
Jadi permutasi karakter input menghasilkan
1
tiga kali dalam baris yang berbeda.sumber
Removing any part of the source code however should cause that specific output to not be produced.
pada saat Anda memposting, saya tidak bermaksud untuk menambahkannya dan telah dihapus. Mungkin itu akan membantu Anda meningkatkan skor sedikit mungkinJelly , skor
53101Hanya menggunakan karakter yang merupakan bagian dari halaman kode Jelly .
Jelly memiliki input implisit dari
0
, dan bagian pertama (hingga dan termasukạị«»
) dari string kode di atas sebagian besar terdiri dari atom monadik (huruf besar) dan dyadic (huruf kecil dan simbol) yang ketika diberi nol atau daftar yang hanya mengandung satu nol ( atau dua input tersebut dalam kasus angka dua) mengembalikan nol atau daftar yang hanya mengandung satu nol.Pengecualiannya adalah:
Spasi: diabaikan (meskipun ada di halaman kode).
Pilcrow,
¶
memisahkan tautan (seperti halnya umpan baris - tetapi itu benar-benar byte yang sama), tetapi tidak ada byte lain yang akan mereferensikan kode sebelumnya.scarab,,
¤
menginstruksikan parser untuk memperlakukan semua yang tersisa mulai dari nilad (atau konstanta) sebagai konstanta (dan bekerja sebagai atom pertama).Dolar,,
$
menginstruksikan parser untuk memperlakukan dua tautan ke kiri sebagai monad (dan, agak mengejutkan, berfungsi sebagai atom pertama)Yen,,
¥
juga menginstruksikan parser untuk memperlakukan dua tautan yang tersisa sebagai angka dua.Direkomendasikan,,
®
mengingat nilai registri, pada awalnya0
(itu adalah hak cipta pendamping©
,, rusak ketika digunakan sebagai atom pertama karena arity ditemukan dari arity tautan ke kiri, yang belum ditetapkan).Kode dari tanda kurung,
(
dan)
dan seterusnya, saat ini adalah titik kode yang tidak digunakan, semua ini dapat diuraikan dan masing-masing menyebabkan rantai baru (seperti baris baru, meskipun mereka tidak memiliki efek membuat tautan yang dapat dipanggil seperti baris baru, tetapi itu tidak masalah di sini karena tidak ada yang mencoba melakukannya).sumber
TI-Basic (83 series), 93 poin (99 on a TI-84 Plus)
Semua digit, semua variabel satu byte (termasuk θ dan n , variabel independen untuk grafik polar dan berurutan), konstanta π, e , dan saya , beberapa tidak-cukup-variabel (
Ans
,rand
, dangetKey
), dan 59 yang berbeda variabel jendela (semua yang dijamin akan didefinisikan).Penggandaan tersirat menjamin bahwa hasilnya akan 0 ketika kami menerima ini dalam urutan apa pun. Jika ini berjalan pada kalkulator baru, semua variabel akan menjadi 0; bahkan jika tidak,
getKey
akan menjadi 0 karena tidak ada waktu untuk menekan tombol sebelum program mengembalikan nilai.Pada TI-84 Plus atau lebih tinggi, kita bisa mendapatkan 6 poin lebih dengan menambahkan token
getDate
,getTime
,startTmr
,getDtFmt
,getTmFmt
,isClockOn
. Hasilnya sekarang akan selalu{0 0 0}
karenagetDate
dangetTime
mengembalikan daftar panjang 3 dan multiplikasi tersirat mendistribusikan elemen.Saya pikir ini semua token yang mungkin untuk digunakan: setiap perintah aktual adalah awalan, infiks, atau postfix (artinya mereka tidak akan bekerja di awal atau akhir program) dan variabel lain mungkin tidak terdefinisi (dan menyebabkan kesalahan saat bekas).
sumber
(non-bersaing) Brainf-ck, 63 byte
Yah, saya tidak tahu apakah ini dianggap curang, tapi ...
Titik mencetak karakter saat ini (0x00) dan karakter lainnya tidak melakukan apa pun. Secara teknis ini dapat diperluas tanpa batas, jadi tolong beri tahu saya jika ini dianggap curang.
sumber
Haskell, 3 poin
Tidak peduli bagaimana disusun ulang kode ini selalu mengembalikan fungsi yang menambah input. Contoh penggunaan dalam balasan:
sumber
√ å ı ¥ ® Ï Ø ¿ , 128.234 (?) Poin
Saya tiba di 128.234 dengan bantuan dari @DestructibleLemon. Program ini menggunakan semua karakter Unicode (128.237) kecuali
o
,O
danł
. Anehnya, dua di antaranya adalah perintah keluaran.Tentunya, tidak ada bahasa yang bisa menggunakan semua karakter itu, kan? Nah bahasa ini mengabaikan perintah yang tidak dikenali. Masalah terpecahkan.
Bahasa ini akan, secara default, menampilkan yang berikut:
yang tidak nol, tidak nol, tidak kosong dan tidak salah.
Catatan: jika ini melanggar beberapa aturan tidak tertulis, beri tahu saya di komentar dan saya akan mengubahnya. Jika Anda tahu skor saya (dengan asumsi ini diizinkan), juga kirim dalam komentar.
sumber
J, 3 byte
Karakter 1, spasi, dan baris baru akan selalu mencetak 1.
sumber
/// ,
12 poinCobalah online!
Saya tidak tahu bagaimana melakukannya dalam bahasa lengkap Turing lainnya. Tentu saja, ada HQ9, tapi itu hanya terasa curang.
Terima kasih 1 byte ke @Martin Ender.
sumber
Dots , 1.114.111 karakter (jika menggunakan unicode).
<87 dots here> Every Unicode character except NUL and . here
Penjelasan:
Jadi string biner yang dihasilkan adalah
1010111
, yang dikonversi menjadi desimal adalah 87, jadi kita perlu 87 titik.Setiap karakter lain adalah komentar, jadi kami menggunakan setiap karakter kecuali NUL, karena Python3 berhenti membaca file, dan sebuah titik, karena titik-titik bukan komentar.
sumber
Pendahuluan , skor 1.112.051
(Ketika hanya mempertimbangkan ASCII yang dapat dicetak
[\t\n -~]
, skornya adalah 84. Jika kita mempertimbangkan semua poin kode Unicode , skornya adalah 1.112.051 .)(lalu tambahkan semua karakter
[\u{7f}-\u{10ffff}]
setelahnya.)Selalu cetak
0
.Prelude adalah bahasa berbasis tumpukan paralel, di mana tumpukan diisi sebelumnya dengan angka 0s yang tak terbatas.
+
: Pop dua nilai (selalu 0), tambahkan (0), dan dorong untuk menumpuk.-
: Pop dua nilai (selalu 0), kurangi (0), dan tekan untuk menumpuk.#
: Pop nilai dan buang.!
: Pop nilai dan output sebagai angka (selalu 0) (spec mengatakan "karakter" tetapi penerjemah mengatakan "angka"; kedua kasus, byte dicetak)0
: Menekan 0.^
,v
,V
: Dorong nilai atas / program sebelumnya berikutnya paralel ( "suara"), tetapi tumpukan semua "suara" yang diisi dengan 0, sehingga mereka selalu mendorong 0.Jadi hanya ada 13 karakter yang perlu kita hindari:
(
,)
: Tanda kurung yang tidak berpasangan akan menyebabkan kesalahan1
-9
: Kami hanya ingin menghasilkan 0.?
: Kami tidak ingin memasukkan apa pun.*
: Menyebabkan konsistensi yang sangat rumit, periksa kode sebelum dan sesudah satu baris yang terdiri dari satu-satunya*
. Jadi kita harus menghapus baris baru atau menghapus*
. Implementasi referensi menggunakan Python 2.readline()
yang artinya "baris baru"\r
atau\n
. Jadi lebih baik menghapus saja*
.sumber
Deadfish , skor 86
Jika itu ilegal, maka ada juga
(skor 1)
sumber