Tugasnya sederhana: cetak The quick brown fox jumps over the lazy dog
menggunakan sesedikit mungkin karakter berbeda dalam kode sumber Anda.
print "The quick brown fox jumps over the lazy dog"
memiliki skor 29 karakter, karena semua 26 huruf kecil muncul setidaknya sekali, serta T huruf besar, spasi, dan karakter kutipan. Saya yakin Anda bisa menjadi lebih kreatif dari itu!
Brainfuck, Whitespace, dan bahasa serupa (atas kebijakan saya) tidak diizinkan. Jeda baris dihitung sebagai satu karakter. Kode mungkin sepanjang diperlukan. Saya akan menerima solusi pada 21 April, 11:59 EST. Jika terjadi seri, jawaban yang lebih pendek akan diterima.
code-challenge
Fraxtil
sumber
sumber
least-characters
kriteria dan label resmi, seperticode-golf
Jawaban:
dc: 4 karakter berbeda ( total
384375363361360350)Sebuah jawaban singkat (tapi jauh dari yang sesingkat mungkin, saya masih mengerjakannya) hanya menggunakan 4 karakter berbeda dan
384375363361360350 karakter total, saya harap Anda akan menemukan itu sepenuhnya jelas:Jawaban sebelumnya yang sedikit lebih verbose (mengandung 13916 1's):
Ah, kamu hanya harus menyukai kalkulator meja yang bisa dipercaya!
sumber
Kode mesin Intel 64-bit untuk Linux dalam biner: 2 karakter berbeda
Saya menolak untuk menulis ulang di unary.
sumber
Lua, 8 karakter berbeda
Semua karakter baris baru harus dihapus dari kode ini untuk mendapatkan satu baris panjang 1998.
Diperlukan Lua 5.2
Bagaimana program Lua yang sewenang-wenang dapat ditulis hanya menggunakan 8 karakter
load"\05
Memiliki karakter
05\
, dimungkinkan untuk menulis string literal untuk string apa pun yang terdiri dari karakter0257\
. Memang,"\\"
berarti backslash,"2" == "\50"
dan"7" == "\55"
("\ddd"
dalam Lua berarti char dengan kode desimalddd
).Memiliki chars
0257\
, dimungkinkan untuk menulis string literal untuk string yang terdiri dari chars024579\
(as"4" == "\52"
dan"9" == "\57"
)Pada langkah selanjutnya chars
01245679\
akan tersedia.Diperlukan satu langkah lagi untuk mendapatkan semua angka desimal.
Lua memiliki fungsi
load
yang memperlakukan string sebagai kode Lua dan mengubahnya menjadi suatu fungsi.Misalnya,
load("print\"Hello\"")()
cetakanHello
.Itu dapat ditulis tanpa tanda kurung:
load"print\"Hello\""""
(dua tanda kutip terakhir berarti string kosong yang dilewatkan sebagai parameter opsional ke fungsi).Setiap program Lua dapat dikonversi menjadi alfabet tereduksi dalam paling banyak 5 langkah.
Contoh: Jika program kami terdiri dari satu digit
9
, maka hanya dua langkah yang diperlukan:langkah 0:
9
langkah 1:
load"\57"""
langkah 2:
load"load\"\\5\55\"\"\""""
sumber
Python, 9
Menggunakan ide ini . (Pemutus baris ada untuk dibaca dan dapat dihapus.)
Ini membangun string
'print"The quick brown fox jumps over the lazy dog"'
dan mengeksekusinya.sumber
exec
, katakan Anda menjalankannya di python shell dan mengklaim 7 karakter.dc - 5 karakter berbeda (2, i, 1,0, P)
sumber
Tcl 10 karakter berbeda.
Karakter yang digunakan:
,
0
,1
,2
,3
,4
,5
,6
,7
,\
Itu hanya setiap bagian dari perintah yang dikodekan sebagai urutan \ ooo. Untuk Tcl, tidak masalah jika Anda melakukan hal-hal lucu seperti dalam nama perintah atau dalam argumennya, pada kenyataannya hal
$object configure
itu sangat umum di Tcl / Tk.Dengan teknik ini dan
eval
Anda bahkan dapat menulis setiap program di Tcl dengan 10 byte berbeda :)Program uji:
sumber
\uXXXX
18 byte berbeda.GolfScript (4 karakter berbeda, total 441 karakter)
Karakter yang digunakan:
]1(+
Penjelasan: di GolfScript, menambahkan string ke array integer mengubah array menjadi string dengan integer sebagai codepoints dan kemudian menggabungkan dua string. Jika tidak ada yang diberikan pada stdin, tumpukan dimulai dengan string kosong. Jadi kita bisa membangun array bilangan bulat dengan codepoint yang tepat dan kemudian menyambung ke string kosong itu.
Kita perlu
+
untuk penggabungan,]
minimal untuk membuat array (dan entah[
untuk mencegah string kosong dari yang termasuk di dalamnya atau beberapa cara mengekstraksi setelah itu), dan beberapa cara memisahkan bilangan bulat. Jadi saya menggunakan operator pengurangan(
untuk memisahkan bilangan bulat, yang membutuhkan beberapa tambahan tambahan untuk mengkompensasi dalam beberapa kasus tetapi memberikan cara cepat untuk mendapatkan misalnya 110; dan operator itu juga operator untuk mengekstraksi elemen pertama dari array, sehingga berfungsi untuk mengambil string kosong untuk penggabungan.sumber
Ruby: 7 karakter berbeda
(Dengan terima kasih kepada randomra untuk komentarnya .)
Contoh dijalankan:
Perhitungan:
sumber
Java: 18 karakter berbeda
Program Java dapat ditulis dalam notasi UNC ... Tetapi tetap verbose!
sumber
J, 6 karakter berbeda
6 versi char berbeda (
u:10 +
) menggunakan beberapa ide flornquake yang digunakan. Metode ini menambahkan vektor0
1
11
dan111
bersama - sama untuk menambahkan hingga84 104 101 32 113 117 ...
vektor yang diinginkan :Mengedit :
1+:1
yang0
jadi mungkin ada solusi 5 Char di sini ... (Juga+:
sebagai ganda dapat digunakan untuk mempersingkat solusi.)13 versi char yang berbeda:
Peningkatan pengguna Anonim (DirkL): solusi lebih pendek tetapi masih menggunakan 6 karakter (
u:23 |
) dimungkinkan. Menggunakan|
sebagai operator residu untuk desimal misalnya223 | 2333333 = 84
.sumber
Befunge-98, 3 karakter berbeda
Menggunakan ini Befunge-98 interpreter. Pada awalnya, saya bergabung dengan kompetisi 4-karakter dengan
@
di akhir untuk mengakhiri. Program ini berulang kali menghasilkanThe quick brown fox jumps over the lazy dog\r
, di mana terminasi\r
menghapus kalimat sebelumnya. Karena itu, kalimatnya ditulis sekali.Befunge-98, 4 karakter berbeda (total 1047 karakter)
Versi yang kurang curang. Yang ini berakhir secara normal.
sumber
JavaScript (di Chrome Console) 17
Saya memiliki ide yang sama dengan flornquake tetapi dia juga mengalahkan saya. Jadi saya mencari cara jelek untuk melakukan ini!
sumber
constructor+[]
berbeda dari yang saya dapatkan. Versi krom yang berbeda saya kira. Sudah kubilang jelekC, 15 karakter berbeda
Beberapa inspirasi dari jawaban Fors (yang saya kalahkan oleh karakter) dan komentar ecatmur untuk jawaban itu.
Spasi dan baris baru hanya untuk kejelasan, dan tidak dihitung.
Bagaimana itu bekerja?
1. Setiap kelompok 3 karakter diwakili dalam angka. Sebuah penunjuk ke nomor ini, diperlakukan sebagai penunjuk karakter, adalah penunjuk ke string 3 karakter ini, ditambah nol penghentian. Asumsikan little-endian.
2. Fungsi
a
membantu mendapatkan alamat nomor literal, tanpa mendefinisikan variabel.sumber
{}
salah satu baris yang hilang , yang membuatnya sensitif terhadapa
nilai pengembalian.vba (
168 karakter berbeda)(menggunakan ide dari matatwork dan AutomatedChaos)
perhatikan bahwa jika Anda ingin memasukkan ini ke dalam, Anda harus membagi garis menjadi 2, karena terlalu lama untuk editor VBA
sumber
Chr()
? Tampaknya bekerja dengan baik tanpa:?Chr(&0124);Chr(&0150);Chr(&0145);…
.?chr(1+)
itu akan menjadi seperti?chr(11+11+11+11+11+11+11+1+1+1+1+1+1+1)+chr(11+11+11+11+11+11+11+11+11+1+1+1+1+1)+ .... etc.
?Chr(&0124)Chr(&0150)Chr(&0145)…
.C: 16 karakter berbeda
sumber
if(putchar(...)+putchar(...)){}
menghapus;
tetapi menambahkanf
(tetapi bergantung pada urutan evaluasi yang tidak ditentukan).if(putchar(...)){}if(putchar(...)){}
dll.if(putchar(...))if(putchar(...)){}
atauif(putchar(putchar(...)+...){}
, tetapi masih pendekatan ini tidak menyimpan karakter.Postscript (19 karakter berbeda)
Menggunakan digit heksadesimal 0-9, af, pembatas hex-string <>, dan = untuk mencetak.
(13 karakter berbeda)
Bilangan radix biner mendapatkan data dalam 4 karakter (0,1,2, #), tetapi membutuhkan string kosong () dan beberapa huruf (masukkan, dup (-up), cetak (-pt)) untuk memasukkan angka biner di sana.
sumber
APL 8
Perintah berikut mengubah string karakter menjadi setara biner:
Jika kita menetapkan biner yang dihasilkan ke vektor untuk menghindari keharusan menampilkan semua nol dan yang kemudian kita dapat mencetak hasilnya dengan membalikkan proses dengan menerapkan:
Jadi 8 karakter unik adalah 8,2, ⎕, d, r, spasi dan 0 dan 1 dalam vektor biner s.
sumber
k
12 karakter berbeda
Karakternya adalah
10h$2/:'(b;)
sumber
PHP 10 karakter berbeda.
e, c, h, o, r, (, 1, +, ), ;
(Jeda baris dapat dihapus.)sumber
echo(chr(1+1+1+...));
, jadi Anda kembali ke 10 karakter lagi.Bash:
1816 karakter berbedaContoh dijalankan:
Perhitungan:
sumber
cat
hanya solusi 3 karakter. Tangkapannya adalah Anda perlu"The quick brown fox jumps over the lazy dog"
memasukkannya ke pipa .K, 9
1 @ 0 h $ (+;)
sumber
Perl, 10 karakter
Pada dasarnya rip-off dari solusi Python flornquake.
Menggunakan substitusi dengan
ee
adalah cara yang lebih murah untuk mendapatkannyaeval
. Sayangnya, Perl menggunakan.
untuk penggabungan, yang menambahkan karakter.Saya berharap untuk menghilangkan tanda kurung (yang opsional untuk fungsi di Perl), menggunakan sintaks seperti ini:
(Ya,
s
adalah pembatas regex yang valid). Namun, saya tidak bisa.
membuatnya bekerja karena diutamakan terlalu tinggi, mencoba untuk menyatukan sebelum memanggil fungsi.sumber
Erlang 8 karakter berbeda
Karakter yang digunakan:
012#<>:.
sumber
C (23 karakter berbeda)
Catatan: Saya tidak memasukkan baris baru dalam jumlah karakter yang berbeda, tetapi ini dapat dengan mudah dihapus jika perlu, dengan mengorbankan keterbacaan.
sumber