The karakter ASCII dari kode desimal 33-126 adalah:
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Perhatikan bahwa di sebagian besar font, 25 karakter ini memiliki "lubang" di dalamnya: ( genus lebih besar dari 0 yang mungkin Anda katakan)
#$%&04689@ABDOPQRabdegopq
68 karakter "tidak suci" lainnya adalah:
!"'()*+,-./12357:;<=>?CEFGHIJKLMNSTUVWXYZ[\]^_`cfhijklmnrstuvwxyz{|}~
Tugas Anda adalah untuk menulis program terpendek yang mungkin hanya menggunakan karakter yang tidak dikupas yang menghasilkan masing-masing karakter holed sekali dalam urutan apa pun.
Karena Spasi, Tab, dan baris baru (Umpan Lini dan / atau Pengembalian Kereta) adalah ruang kosong yang mungkin muncul di program Anda atau hasilnya. Mereka masih menghitung jumlah karakter. Karakter ASCII lainnya tidak boleh digunakan (dan tentunya bukan karakter non-ASCII).
Catatan
- Anda tidak harus menggunakan semua karakter yang tidak suci atau hanya satu karakter saja.
- Outputnya mungkin tidak mengandung karakter yang tidak dilapis.
- Bahasa Whitespace dapat digunakan.
- Output harus menuju stdout atau dapat pergi ke file. Seharusnya tidak ada input.
Bonus: Hanya untuk bersenang-senang, cobalah mencetak semua karakter yang tidak suci menggunakan karakter yang dikurung. Saya ragu bahwa itu bisa dilakukan dalam bahasa yang sudah ada.
sumber
main
.~
??Jawaban:
Pyth ,
4335 karakterCoba di sini .
Mencetak karakter dalam urutan kecuali bahwa 9 di awal, baris baru dipisahkan.
String berisi semua karakter 7 lebih besar dari yang dibutuhkan, kecuali bahwa 9 akan menjadi @, jadi itu adalah casing khusus. Algoritma terima kasih kepada @Howard.
Penjelasan:
sumber
GolfScript,
3736 karakterCoba kodenya di sini .
String berisi karakter terlarang xor'ed dengan 25. Untungnya semua karakter dipetakan ke karakter yang valid.
sumber
Brainfuck 119
sumber
--
di awal ... Apakah Anda bersepeda kembali ke 254 pada daftar awal di sana?Bonus - dc, 179 karakter
Oh bagus, tantangan rangkaian karakter terbatas lainnya yang
P
diizinkan.Karena
dc
tampaknya cukup tidak jelas untuk membutuhkan penjelasan (aneh bagi saya mempertimbangkan hal-hal aneh di sekitar sini!) Di sini adalah ikhtisar:Ini terutama kalkulator RPN dengan aritmatika presisi arbitrer. Tetapi untuk tantangan ini, saya menggunakan
P
perintah, yang menginterpretasikan angka sebagai serangkaian karakter dalam basis 256 dan mencetaknya. Contoh:65 P
cetakanA
(kode ASCII 65).16706 P
cetakanAB
(16706 = 65 * 256 + 66).Selain itu, satu-satunya fitur menarik lainnya adalah bahwa ia mengenali semua digit heksadesimal
0-9A-F
bahkan ketika mereka tidak terkandung dalam angka heksadesimal. Input desimal adalah default, sehingga token input999
berarti9 hundreds + 9 tens + 9
danABC
berarti10 hundreds + 11 tens + 12
membuatnya setara dengan1122
.Kemampuan untuk menggunakan angka
ABD
dalam desimal sebagian menggantikan ketidakmampuan untuk digunakan12357
, dan pilihan pemesanan dan pengelompokan melakukan sisanya. (Jika saya perlu beberapa nomorx
,y
,z
dan mereka tidak representable dengan diperbolehkan digit, maka saya mencoba mewakilix*256*256+y*256+z
sebagai gantinya.)Program ini mungkin dapat dibuat sedikit lebih pendek dengan menggunakan grup yang lebih besar. Saya tidak melewati 3 byte per angka.
sumber
dc bonus.dc
. dc adalah salah satu bahasa tertua di luar sana dan telah menjadi perlengkapan tetap di * nix selama beberapa dekade. Ini tidak terkenal, mungkin karena sintaksis RPN yang misterius dan tidak terlalu mudah dibaca. Bagus untuk beberapa tantangan kode-golf ;-)Bash + coreutils, 56 byte
Seperti keberuntungan, menambahkan 7 pada nilai ascii dari karakter yang dikurung menghasilkan semua karakter yang tidak dikupas (dengan pengecualian "9"). Jadi kami hanya melakukan transformasi ini secara terbalik, kemudian transformasi serupa (kurangi 12 dari "E") untuk mendapatkan "9".
Keluaran:
sumber
-7
ditampilkan secara mencolok antara karakter tanda baca, dan 2 fakta itu tidak ada hubungannya dengan satu sama lain.Perl - 49 Bytes
Ini adalah versi Perl dari solusi Howard. XOR dengan string dengan 25. Outputnya adalah file dengan nama
#$%&04689@ABDOPQRabdegopq
. Saya mendapat ide untuk menggunakansymlink
dan nama file sebagai format output karena semuanya dilarang.Inilah solusi Perl lain yang saya buat. Ini mungkin dapat ditingkatkan banyak dan cukup lama, jadi saya akan pergi dalam format yang dapat dibaca untuk saat ini.
Ini menghasilkan banyak file, nama masing-masing adalah salah satu karakter. Saya tidak tahu cara menambahkan string tanpa menggunakan karakter terlarang.
for
,while
,map
,say
,print
,eval
,s///e
, Dan setiap nama variabel tidak dapat digunakan (variabel mulai dengan@
atau$
di Perl) yang membuat ini sulit.Mudah-mudahan nama file tidak apa-apa sebagai format output karena saya cukup yakin setiap cara lain untuk menampilkan informasi menggunakan salah satu karakter yang dilarang.
sumber
-p
flag dan*_=\(
...)
: Cobalah online!-p
bendera akan dilarang karenap
memiliki lubang.MATLAB, 36 byte
SO CLOSE .... Hanya 1 byte lebih banyak dari pemenang saat ini (isaacg)! Yang, pada pemeriksaan lebih lanjut, sudah melakukan apa yang ingin saya lakukan juga. Nah, tidak ada salahnya menciptakan kembali roda ...
Saya tahu ini adalah tantangan lama, tetapi saya baru sadar setelah saya tertarik.
Kalau saja saya bisa mendapatkan MATLAB untuk memahami bahwa saya ingin string tanpa
''
saran ... terpisah , siapa pun?sumber
Brainfuck
303275Brainfuck, bahasa esoterik utama yang tidak suci (selain dari Whitespace);)
sumber
Ctrl
+K
:)`
Itu backtick. (Juga disebut aksen kubur, meskipun " kutipan halies " adalah yang baru bagi saya: P)JS - 196 - coba
sumber
h=1-1;j=3+3;k='\\x';m=!i+k;c=m[1];f=m[i=2+2];l=k+3;n=k+j;r=k+i;this[f+'v'+c+'l'](c+'l'+f+'rt("\\x23\\x2'+i+k+25+k+2+j+l+h+l+i+l+j+l+2*i+l+3*3+r+h+r+1+r+2+r+i+r+'f\\x5'+h+k+51+k+52+c+n+2+n+i+f+n+7+n+'f\\x7'+h+k+'71")')
- sebarisl
, diperpendekm
, dideklarasikani
pada penggunaan pertama, menciptakan beberapa vars tambahan untuk pola berulang (Anda mungkin bisa memperbaiki ini dengan mengubah urutan karakter yang dihasilkan, tapi itu di luar kesabaran saya: P).GolfScript, 89 karakter
Cukup buat larik semua karakter ASCII dan kurangi karakter yang tidak "disembunyikan" darinya.
sumber
Menembus 98 - 69 byte
Lakukan dalam 3 bagian. Satu di mana nilai karakter yang tidak suci berbeda dari karakter holed oleh 5. Kemudian orang-orang yang berbeda dengan 1, dan akhirnya daftar karakter tidak suci yang berbeda dengan 3 dari yang holed. Instruksi penghentian program di Befunge adalah "@" (nilai char 64), jadi pada akhirnya saya memuat "?" (nilai char 63) tambahkan 1 lalu masukkan ke dalam kode dengan instruksi 's'.
Saya mungkin bisa bermain golf lebih banyak dengan menggabungkan ketiganya
bagian, tapi mungkin tidak banyak.
sumber
JavaScript
240228Penyerahan awal:
z=(!1+"")[1];y=(!!1+"")[3];x={}+"";w=x[1];v=x[2];u=z+"t"+w+v;1[_="c\157nstruct\157r"][_](z+'l'+y+'rt('+u+'("Iy\x51lJj"+'+(t=u+'("\x51\x51==")')+'+'+u+'("M"+'+t+'+"==")+"Nj"+'+u+'("Zw==")+"5\x51EFC\x52E\71\x51UVJhYm\x52lZ2\71wc\x51=="))')()
Sekarang, ini adalah awal yang baik, inilah cara kerjanya ...
Dan kemudian saya berpikir ... "Pasti ada cara yang lebih sederhana ..." dan ada ...
Pengajuan yang direvisi:
z=(!1+"")[1];y=(!!1+"")[3];x={}+"";w=x[1];v=x[2];u=z+"t"+w+v;this[y+"v"+z+"l"](z+'l'+y+'rt('+u+'("Iy\x51lJj"+'+(t=u+'("\x51\x51==")')+'+'+u+'("M"+'+t+'+"==")+"Nj"+'+u+'("Zw==")+"5\x51EFC\x52E\71\x51UVJhYm\x52lZ2\71wc\x51=="))')
Melihat saya dapat menggunakan
eval
(oleh piecing bersama-sama, inspirasi dari @bebe; yang jauh lebih cepat daripada menggunakanconstructor
dariconstructor
darinumber
...) aku dibor ke bawah untuk 228 ... Aku tahu itu tidak mungkin menang Golf Challenge khusus ini , tapi ini hanya cara saya menunjukkan seberapa banyak Anda dapat menyalahgunakan JavaScript, dan masih mendapatkan hasil yang diinginkan ...sumber
Utama - Insomnia , 50
Ini menghasilkan:
Bonus - Insomnia, 268
Ini menghasilkan:
Saya pikir itu harus mungkin untuk mengurangi panjang program jika output disusun ulang, tetapi saya perlu memodifikasi program pencarian saya untuk melakukan ini.
Hanya untuk menunjukkan huruf bahasa lain yang mampu beroperasi dengan jumlah karakter terbatas. Ngomong-ngomong, ia bisa menulis sembarang keluaran dengan hanya 3 karakter unik di sumbernya.
Saat ini, ini adalah satu-satunya bahasa yang dapat melakukan tantangan utama dan juga bonus di antara semua jawaban yang ada.
Penerjemah Insomnia .
sumber
Menembus 98 - 46 byte
Versi Befunge-ified dari entri Pyth isaacg:
sumber
Japt , 33 byte
Cobalah online!
Algoritma yang sama dengan pengajuan Pyth isaacg , kebetulan lebih pendek di Japt.
Bagaimana itu bekerja
Ya, ini JS, yang merupakan salah satu bahasa yang paling kasar , hanya lebih pendek (dan Anda tidak perlu
alert
atau diconsole.log
sini).sumber