Cetak setiap karakter yang tidak dimiliki program Anda


221

Tugas Anda adalah untuk membangun program (hanya menggunakan karakter ASCII yang dapat dicetak dan / atau tab dan baris baru) yang mencetak persis karakter dalam ruang ASCII yang dapat dicetak ( 0x20ke 0x7e) yang tidak muncul dalam kode sumber program Anda (dalam urutan apa pun, namun berkali-kali kamu mau).

Kode terpendek untuk melakukan ini dalam bahasa apa pun menang.


19
Mereka, tapi mereka tidak dalam kisaran 0x20untuk 0x7e, yang didefinisikan sebagai "karakter ASCII dicetak". Secara teknis tab dan baris baru sebenarnya adalah karakter kontrol.
Joe Z.

3
Apakah kami diizinkan untuk mencetak baris baru (atau karakter ASCII lainnya yang tidak patut)?
flornquake

1
Tab dan baris baru tidak membuat sedemikian rupa sehingga mereka menempati posisi pencetakan. Mereka memindahkan posisi. Lihat fungsi ANSI C "isprint".
Kaz

1
Bagaimana pertanyaan ini dihidupkan kembali? Sudah mulai mendapatkan upvotes lagi.
Joe Z.

3
@Timwi: Jika Anda ingin melakukan itu, Anda harus menampilkan semua karakter di ruang karakter CJK juga (tidak termasuk yang muncul dalam kode Anda). Terlalu rumit untuk dikelola, jadi saya batasi hanya untuk ASCII.
Joe Z.

Jawaban:



275

Polyglot, 95

#undef X;A!"$%&'()*+-[,.]/0123456789:<=>?@BCDEFGHIJKLMNOPQRSTUVWYZ\^_`abcghijklmopqrstvwxyz{|}~

Tidak melakukan apa-apa.


19
Tidak, tapi ini poligot. Saya tidak ingin menghancurkan itu.
Johannes Kuhn

95
Saya memasukkan ini ke dalam kompiler GNU Fortran dan itu segfaulted.
marinus

12
Di C, #undef X;whatever junk you wantbekerja.
ugoren

6
Bekerja di Python juga (karena digunakan #untuk komentar seperti Ruby dan Perl)
Doorknob

87
"Kode terpendek untuk melakukan ini dalam bahasa apa pun menang." Untuk kurangnya kode yang berfungsi dalam bahasa apa pun , entri ini harus menang, karena itu kode yang berfungsi dalam jumlah bahasa terbesar. ;-D
msb

142

PHP 5.2, 4

<?<<

Simpan sebagai file yang dipanggil NYUIOMK()'DEAQRWVX[Z]\^@CBGFJqwv{z}|~`bgfkj203547698;=>!#"%$&+*-.phpdi suatu tempat di /home. short_open_tagperlu Ondi Anda php.ini.

Outputnya adalah:

PHP Parse error:  syntax error, unexpected T_SL in /home/wherever/NYUIOMK()'DEAQRWVX[Z]\^@CBGFJqwv{z}|~`bgfkj203547698;=>!#"%$&+*-.php on line 1

42
Haha, peraturan yang bagus.
Johannes Kuhn

6
Bagus, tapi sayangnya saya bisa melihat :di output.
Howard


78
Saya menghargainya, @TheGuywithTheHat, tapi saya menjawab ini sekitar setahun yang lalu, berbeda dengan kemarin.
Ry-

9
@TheGuywithTheHat Ini adalah salah satu jawaban ketika celah itu lucu, baru, dan mengarah ke pos meta tertaut Anda. Sekarang tidak lagi.
Johannes Kuhn

48

JavaScript - 88

alert("BCDFGHIJKMNPQUVXYZ".toLowerCase())// !#$%&'*+,-0123456789:;<=>?@[\]^_`{|}~AERTOWS

mencetak "bcdfghijkmnpquvxyz"


13
Wow saya suka ide toLowerCase, sangat brilian!
Pierre Arlaud

2
Anda dapat menyimpan tiga karakter dengan sedikit matematika: "!#$%&*+,-13:<=>?@[\]^_`{|}~AERTOWS";alert('BCDFGHIJKMNPQUVXYZ'.toLowerCase()+95*72)karena 95*72= 6840dan memindahkan karakter yang terbuang ke string memungkinkan Anda untuk menggunakan tanda kutip alih-alih membuangnya. Selain itu, menyembunyikan karakter dalam komentar terasa murahan.
Payung

28

Spasi, 61 57 karakter

Ini bukan yang terpendek tetapi mungkin memiliki logika paling sederhana (itu hanya satu lingkaran).

Ini sepenuhnya dikomentari, di mana S adalah ruang, T adalah tab, L adalah umpan baris:

SSSTSSSSSL     # push 0x20
LSSSL          # label S
SSSTL          # push 1
TSSS           # add
SLS            # duplicate top of stack
SLS            # duplicate again
TLSS           # output ASCII character
SSSTTTTTTSL    # push 0x7E
TSST           # subtract (result - 0x7E)
LTTSL          # branch to label S if top of stack is negative
LLL            # end

Berkat @res untuk koreksi di atas (diperlukan duplikat tambahan untuk instruksi cabang) dan untuk angka yang lebih kecil untuk mendorong tumpukan.


1
Ini tidak berfungsi apa adanya, tetapi dapat diperbaiki dengan memasukkan duplikat-atas-tumpukan (SLS) segera sebelum cabang bersyarat (LTTSL) - itu diperlukan karena perintah cabang bersyarat menghapus bagian atas tumpukan . Program 64 karakter yang dihasilkan berfungsi seperti yang diiklankan. (Jika program disimpan dalam file dengan ekstensi .ws, itu dapat diuji secara online di golf.shinh.org/checker.html )
res

1
Juga, panjang program dapat dikurangi menjadi 57 menggunakan hampir program yang sama tetapi dengan tiga mendorong angka -94, 127, 126 diubah menjadi 32, 1, 126, masing-masing: SSSTSSSSSL LSSSL SSSTL TSSS SLS SLS TLSS SSSTTTTTTSL TSST LTTSL LLL.
res

Saya tahu ini sudah lebih dari 5 tahun, tetapi Anda bisa bermain golf 5 byte dengan mengubah label S ke label (kosong) ( LSSSLmenjadi LSSLdan LTTSLmenjadi LTTL) dan menghapus pintu keluar di akhir (ketiganya LLL). Cobalah online 52 byte mentah atau di sini dengan sorotan dan penjelasan .
Kevin Cruijssen

22

C, 83 74 69 karakter

main(z) {for(;++z<96;"\33iE!vk?}GkRP8z"[z/7]&1<<z%7&&putchar(z+32));}

Saya benar-benar mencoba menurunkannya di bawah 80 karakter, tetapi saya belum bisa melakukannya. Saya akhirnya memutuskan untuk memposting apa yang saya miliki, dengan asumsi bahwa saya (atau orang lain) akan mencari solusi 79-karakter sepuluh menit setelah memposting ini. Oke, itu bukan sepuluh menit, tapi itu pada prinsipnya berhasil.

Saya benar-benar ingin memposting versi yang tidak harus memiliki ruang serampangan dalam kode sumber, tetapi yang mendarat di orbit-penarik aneh, memantul di antara beberapa solusi. Setelah beberapa menit mencoba untuk mendorong salah satu dari mereka menjadi solusi yang stabil, saya menyerah dan menambahkan ruang.


69 karakter, bagus
galois

21

Skrip golf, 26 24 karakter

"126,32>''+".~\-'.~\-"'-

Mengambil skrip pembuatan generasi, menduplikasinya, mengeksekusinya, mengambilnya dari hasilnya, kemudian mengurangi kode pengurangan hasil dan karakter kutipan lainnya.


2
Sial, itu pintar.
marinus

1
Hapus ''+, program melarikan diri sebelum pengurangan, masukkan noop .;(tidak menemukan cara yang lebih baik untuk menutupi titik), gunakan blok kode alih-alih string -> {126,33>`-.;}.~yang 16 karakter
Howard

Dan memanfaatkan dalam urutan apa pun, namun berkali-kali Anda ingin Anda juga dapat menghapus titik koma.
Howard

@Howard, saya khawatir saya tidak mengerti ide Anda. Anda dapat mempostingnya sebagai jawaban terpisah.
John Dvorak

@ PeterTaylor saya pikir saya mencetak spasi?
John Dvorak

20

Ikan - 80

zbcdjkpqruvwxaABCDEFGHIJKLMNOPQRSTUVWXYZ#!"'$%^&*()@!+-[]{},;:/\<>=?|~0123456789

Ketika kesalahan ikan itu mencetak "sesuatu berbau amis ...". Karena z adalah instruksi yang salah, ia langsung salah


17

Saya tahu itu tidak memenangkan kontes. Saya hanya ingin mencobanya dalam bahasa yang biasanya tidak digunakan, hanya untuk iseng.

Java - 209 195 152 140 karakter

class a{public static void main(String[]a){for(char c=0;;c++)System.out.print("publicas{tvodmn(Srg[])h=0;w+ye.\"\\xO<?:}".indexOf(c)<0?c:"");}}

Dengan jeda baris dan tab

class a{
    public static void main(String[]a) {
        for(char c=0;;c++)
            System.out.print("publicas{tvodmn(Srg[])h=0;w+ye.\"\\xO<?:} ".indexOf(c)<0?c:"");
    }
}

Waspadalah jika Anda menjalankan: program tidak berakhir. Ha ha

Penjelasan

  1. for(char c=0;;c++): Karena a chardapat diperlakukan sebagai int, saya menggunakannya untuk keuntungan saya di sini untuk meningkatkan semua nilai yang mungkin dari c. Saya menghilangkan kondisi terminating dalam loop (yang akan pergi antara dua titik koma) untuk menghemat karakter, karena tidak ditentukan bahwa program harus diakhiri. :)
  2. "publicas{tvodmn(Srg[])h=0;w+ye.\"\\xO<?:} ".indexOf(c)<0?c:"": Sedihnya, bukan pendekatan yang sangat elegan, tapi itu menyelesaikan pekerjaan. Secara manual daftarkan setiap karakter yang ada dalam kode sumber sebagai Stringliteral, lalu periksa apakah arus char cterjadi di dalamnya indexOf(). Jika indexOf()panggilan kembali -1, itu tidak ada, dan karena itu kita harus mencetaknya. Sisanya hanya menggunakan operator ternary untuk menghemat karakter dan ruang.

dapatkah kau jelaskan sedikit?
joey rohan

1
@joeyrohan Tentu, baru saja menambahkan penjelasan di bawahnya. :)
asteri

keren;) barang-barang bagus :)
joey rohan

2
Anda bisa meletakkan tabel SELURUH ascii cetak dalam komentar dan membuat programm java yang tidak menghasilkan apa-apa. Itu akan mengalahkan Anda :-)
Pierre Arlaud

9
Anda bisa memberi tahu saya bahwa ini akan mencetak setiap karakter Unicode tunggal sebelum saya menjalankannya di terminal saya.
nyuszika7h

14

Perl, 49 karakter

say grep/[^+-246\[-^aceghmprsy]/,map chr,041..126

Ini adalah tantangan yang menarik - ini semacam anti-quine, dan saya telah berhasil mempersingkat program beberapa kali dengan meningkatkan rentang karakter yang muncul di dalamnya.


14

Ruby, 81 78 68 66 62 57

(?!..?~).map{|a|$><<a if/[()ifmap{}|?!.~\/\\\[\]$><]/!~a}

Cukup periksa sendiri. Duplikat karakter yang dihapus secara manual.

Terima kasih kepada Josh untuk menyimpan 4 karakter, dan minitech untuk menyimpan 5 karakter!


Tidak bisakah Anda meletakkan if setelah $> << x untuk menyimpan salah satu dari garis akhir?
Josh

@ Ya. Saya akan melakukannya sekarang.
Gagang Pintu

Anda dapat membawanya ke 58:(?!..?~).map{|x|$><<x if/[()ifmap{}|x?!.~\/\\\[\]$><]/!~x}
Ry-

1
Ah, dan dengan pilihan nama variabel yang lebih baik, 57:(?!..?~).map{|a|$><<a if/[()ifmap{}|?!.~\/\\\[\]$><]/!~a}
Ry-

$><<((32..126).map(&:chr)-IO.read(__FILE__).chars).join55 byte menggunakan pendekatan yang berbeda.
twe4ked

14

Befunge (48)

<|::-1,+*88:<+3*87
6<@.**85
9>"()~&"/%$ |!#';=?}

Output: {zyxwvutsrqponmlkjihgfedcba` _ ^] [ZYXWVUTSRQPONMLKJIHGFEDCBA240


Astaga! Kerja bagus!
Cruncher

12

Tidak terlalu serius, tetapi saya harus mencobanya:

JSFuck (138152)

(sumber kompilasi di sini)

Sumber asli:

for(x=0x7e;x>0x19;x--){
    console.log(String.fromCharCode(x).replace(/[\[\]!\+\(\)]/ig, ''))
}

Mencetak semua karakter kecuali () + []!


2
(x)<=> [x][+[]], menambah ukuran kode tetapi membuat alfabet yang dibutuhkan lebih kecil.
FireFly

12

Tugas Anda adalah untuk membangun program (hanya menggunakan karakter ASCII yang dapat dicetak dan / atau tab dan baris baru)

Astaga, Anda menyulitkan APL (Apakah itu delibarate?)
Jadi saya memutuskan untuk Abaikan Semua Aturan !!!

APL (Dyalog), 3 10

⎕AV

Mencetak vektor atom (yang mencakup semua karakter ASCII yang bisa diperbaiki)


Ternyata saya benar-benar lupa tentang bagian "tanpa" ...
Tapi itu perbaikan yang mudah

⎕AV~'AV'''

~'AV'''berarti mengecualikan ( ~) karakter A, V dan kutipan tunggal (lolos sebagai tanda kutip tunggal berlipat ganda)

Mengenai pencetakan non-ASCII, well, Saya Mengabaikan Semua Aturan.


"cetak [s] dengan tepat karakter dalam ruang ASCII yang dapat dicetak ( 0x20ke 0x7e) yang tidak muncul dalam kode sumber program Anda" Saya yakin hasilnya mungkin tidak mengandung karakter di luar ruang ASCII yang dapat dicetak ("persis" menjadi kata kunci) , dan program Anda mengandung 'A' dan 'V' sehingga tidak boleh dicetak.
FireFly

1
Anda setidaknya ingin menambahkan ~ke set karakter yang dikecualikan. ;-) Btw, solusi J yang serupa adalaha.-.'a.-'''
FireFly

2
Anda dapat Mengabaikan Semua Aturan, tetapi hal itu membuat Anda didiskualifikasi dari jawaban yang diterima.
Joe Z.

11

GolfScript ( 18 16 karakter)

"),@`^^32>#.~".~

Demo online dengan garis tambahan yang melakukan pengecekan kebenaran dan menampilkan jumlah karakter yang salah.

(Saya memiliki berbagai alternatif yang setara. @`^Dapat diganti dengan \\`; #Dapat diganti dengan `atau ]. Kombinasi yang tepat dapat digunakan dengan trik Howard untuk menyamakan skornya 15 karena backslash tidak perlu melarikan diri dalam blok seperti yang mereka lakukan dalam string literal: {),\`^32>].~}.~Tapi Howard layak mendapatkan pujian untuk trik itu).


1
penyalahgunaan aturan yang bagus :-) golfscript.apphb.com/?c=ImAnficoLCszMj5cXC0uIi5%2B
John Dvorak

2
Untungnya ascii berakhir }~- bahkan lebih baik untuk blok kode, lihat jawaban baru saya ;-)
Howard

11

Brainfuck, 173

+++++[->++++++<]>>>++[------<+>]<++++>>----[----<+>]>-[-------<+>]>-[---<+>]<------->>-[---<+>]<+++++++++>>--[-----<+>]<+++++>>+[---------<++>]+++++++++++++[<[.+<]>[>]<-]\=,

Cukup lama, saya mungkin akan mencoba lagi nanti.


6
menulis sebuah program yang tidak melakukan apa-apa dan menambahkan sisanya ke ascii ke sumbernya, kasus terburuk terasa seperti 96 karakter.
Jasen

10

J ( 52 40)

Sunting: Duh, lupakan e.

'''(-@.e#[)~95{32}a'(-.@e.#[)~95{.32}.a.

Versi lama:

(>@(*/@('(>@*/''&~:).#]32{95}a'&~:)&.>)#])95{.32}.a.

Varian lain (panjang yang sama tetapi keluaran lebih sedikit):

([#~*/"1@('([#~*/"1@''&:0)95{.32}a'&~:"0))95{.32}.a.

@JanDvorak: whoops typo
marinus

Sial! Saya berharap saya bisa mendapatkan cukup rendah di Ruby untuk mengalahkan Anda dan kemudian Anda menjatuhkannya sampai ke 40.: P
Doorknob

Yang baru terlihat jauh lebih quiney.
John Dvorak

1
@ Doorknob: Saya punya satu di APL yang hanya 24 karakter tetapi ada karakter non-ASCII di dalamnya.
marinus

Ya, saya melakukan hal ASCII untuk menghindari bahasa seperti APL.
Joe Z.

7

Python 3 - 68 61

x=r"print(*set(map(chr,range(32,127)))-set(x+'=\"'))"
exec(x)

... terima kasih kepada @WolframH untuk perbaikannya.


1
Saya pikir Anda dapat menempatkan exec(x)dalam garis baru dan menyimpan ;di x. Juga, dalam Python 3, Anda bisa menggunakan x=r"print(*set(map(chr,range(32,127)))-set(x+'=\"'))"\nexec(x)untuk 61 karakter (mencetak beberapa spasi, yang diizinkan).
WolframH

@WolframH cerdik, terima kasih!

7

PowerShell: 96

Harus disimpan dan dijalankan sebagai skrip.

diff([char[]](gc $MyInvocation.InvocationName))([char[]](32..126))-Pa|?{$_.SideIndicator-eq'=>'}

diffadalah alias bawaan untuk Compare-Object.

gcadalah alias bawaan untuk Get-Content.

$MyInvocation.InvocationName mendapatkan path lengkap ke skrip yang dieksekusi.

32..126adalah ekivalen desimal untuk 0x20..0x7e, dan karenanya menciptakan larik kode ASCII desimal yang kami cari.

[char[]]mengambil konten objek berikutnya dan menempatkannya ke dalam array, memecahnya dan mengubahnya menjadi karakter ASCII. Jadi, kami sekarang memiliki dua larik karakter ASCII - satu ditarik dari skrip ini, yang lain ditentukan oleh kriteria tantangan.

-Pamengatur Compare-Objectke format "Passthru", jadi hanya item yang ditemukan berbeda antara input yang dikeluarkan pada konsol - indikator item mana yang inputnya masih disimpan dalam data objek, tetapi tidak ditampilkan.

|?{$_.SideIndicator-eq'=>'}Compare-Objectkeluaran pipa ke Where-Object, yang memfilternya hanya ke item yang eksklusif untuk input kedua.


Waras dan instruktif.
Stéphane Gourichon

7

PHP - 92

<? //A"$%&'()*+[,.]0123456789:=-@ABCDEFGHIJKLMNOPQRSTUVWYZ\^_`abcdefghijklmopqrstuvwxyz{|}~#

Keluaran:

tidak ada

OP meminta untuk mencetak semua karakter yang tidak digunakan, well, saya hanya menggunakan semuanya


Bagaimana dengan <?='A"$%&\'()*+[,.]/0123456789:=-@ABCDEFGHIJKLMNOPQRSTUVWYZ\^_`abcdefghijklmopqrstuvwxyz{|}~#'?
jocap

Saya tahu bahwa akan ada kiriman yang hanya menggunakan semua karakter.
MilkyWay90

1
Ini tidak menggunakan karakter!;>Xn
Jo King

6

Javascript, 92

(function f(){for(i=32;126>i++;)!~(""+f).indexOf(c=String.fromCharCode(i))&&console.log(c)})()

Apakah ini solusi yang adil? lansiran ('! "# $% ^ * + / -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [] ^ _` bcdfghijkmnopqsuvwxyz {|} ~') Masuk dengan 95 karakter dan bodoh sekali: p
tristin

2
@tristin: P yeah javascript sedikit verbose ketika datang ke charcode to string. Dan bukankah itu menghasilkan setiap karakter yang tidak dimiliki program Anda. Teks peringatan Anda juga ada di program Anda :)
C5H8NNaO4

1
Haha, oops. Baiklah.
tristin

6

Java - 126 karakter

diminimalkan:

class hjq{public static void main(String...w){for(char z='"'|0;++z!='a';)if("'()+.0;=OS".indexOf(z)==~0)System.out.print(z);}}

tidak dikurangi:

class hjq {
    public static void main(String... w) { 
        for (char z = '"'|0; ++z != 'a';) {
            if ("'()+.0;=OS".indexOf(z) == ~0) {
                System.out.print(z);
            }
        }
    }
}

Ini adalah masalah yang menarik, karena token individual mungkin mendapat manfaat dari bentuknya yang lebih lama karena menggunakan kembali karakter. Sebagai contoh, biasanya String[]akan lebih pendek, tetapi String...menghilangkan kebutuhan untuk tanda kurung dalam string bersyarat.

Saya menemukan triknya adalah dengan mencoba dan menggunakan karakter di awal dan akhir rentang sehingga Anda dapat mengecualikan mereka dari output hanya dengan mengubah awal dan akhir loop Anda.

Untuk Java, karakter kunci yang dikecualikan adalah ", karena memiliki itu di dalam string memerlukannya, yang menambah \program Anda, yang perlu masuk dalam string, yang menambahkan \\. Dengan menghapus "dari string kondisional Anda, Anda menghapus 4 karakter. Ini dapat dicapai dengan memastikan Anda menggunakan dan !dan memulai putaran Anda dari #.

Semua huruf kecil muncul di dekat akhir dari jangkauan, dengan hanya {, |, }dan ~datang setelah mereka. Karena verbositas Java, sebagian besar huruf kecil digunakan hanya untuk boilerplate. Demikian juga, {dan }sepele untuk program Java, karena boilerplate membutuhkannya.

|dapat digunakan jika Anda memiliki atau kondisi, tetapi saya tidak bisa menemukan cara untuk mengambil keuntungan dari yang mengarah ke program yang lebih pendek daripada hanya menggunakan |sebagai operator bitwise. Itu |0membuat saya merasa sedikit kotor, karena itu satu-satunya bagian yang nop hanya untuk mendapatkan karakter di sana.

~0hasil -1, yang berguna karena itulah yang perlu kita periksa indexOf. Menggabungkan ini dengan menggunakan !=kondisional loop menghilangkan <karakter sama sekali, yang berarti tidak perlu masuk ke dalam string kondisional.


5

sh (47)

tr</dev/urandom -cd \[:print:]|tr -d "`cat $0`"

Menggunakan pendekatan referensial diri. Asumsi /dev/urandompada akhirnya akan menghasilkan setiap oktet setidaknya sekali. Tidak berakhir.

Jika kita menganggap itu mansudah diinstal, kita bisa menggunakan halaman ascii(7)manual (dan dengan demikian memiliki program terminating) ( 44 karakter, terima kasih @fennec).

man ascii|tr -cd \[:print:]|tr -d "`cat $0`"

Bisakah Anda menggunakan file lain, mungkin dengan nama yang lebih pendek, yang pada dasarnya dijamin memiliki semua oktet yang mungkin? dan bahkan mungkin berakhir? Saya berpikir seperti / dev / memory atau sesuatu.

@fennec jika kita menganggap itu mandan zshdiinstal, man zshalltampaknya sesuai dengan kriteria. Saya bisa menambahkan itu sebagai variasi.
FireFly

man asciibisa menyelamatkanmu surat lagi, kurasa.

Yang trkamu gunakan GNU trmemperlakukan -in " cat $0" sebagai operator jangkauan, yang memecah output.
Toby Speight

BTW, jika asciiprogram diinstal, Anda bisa menggunakannya sebagai gantinya man ascii.
Toby Speight

5

BitShift , 1038 byte

BitShift adalah bahasa yang hanya mendukung 0dan 1sebagai sintaksis. Saya pikir itu akan mudah untuk mencetak semua karakter lain, tetapi karena itu tidak benar-benar mendukung perulangan masih berakhir dengan 1038 byte besar.
Namun, saya percaya itu tidak benar-benar mungkin lebih kecil dari ini ..

101001100101011011010100110111010100100101011001101111010100100101011001000101011011010100101100110110101001001010110010001010110110101000001101010010010101100100010101101101010000010000011001010110110101000010000101011011010100110111010100100101011111100101011011010100110111010100100101011001101111010100100101011001000101011011010100000000011010100100101011001000101011011010100110010000101011011010100110111010100100101011001101001101010010010101100100010101101101010011001000010101101101010011011101010010010101111011111110010101101101010011011101010010010101100101100101011011010100010001010110110101001000010101101101010011011101010010010101110111110010101101101010011011101010010010101111111100101011011010100110111010100100101011111011110101001001010110010001010110110101001000100000101011011010100110111010100100101011111010011010100100101011001000101011011010100100000101011011010100110111010100100101011001101111010100100101011001000101011011010100010000010101101101010011011101010010010101101001101101010010010101101001101010

Cetakan

 !"#$%&'()*+,-./23456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

Coba di sini


4

Jelas merupakan solusi terpanjang di sini, tetapi pengkodean di Lino selalu menyenangkan:

L.in.oleum -655 523 karakter

"libraries"/arch/cpu/base;/hmi/conout;/data/bytes;/data/string/t2s;/data/heap;/data/heap/connect/mgrab;"stockfile"a;"directors"displaystatus=engage;"injection"c=524;b<-bytes.bytesizeconvert:c;b<-heap.alloc:b;a<-heap.alloc:c;[filecommand]=readfile;[filename]=stockfile;[fileposition]=0;[fileblocksize]=c;[fileblockpointer]=b;arch.fileread;[string.psource]=b;[string.ptarget]=a;string.t2s;b<-heap.alloc:7fh;c=32;d=b;"f"[d_32]=c;+c;+d;?c<7fh>f;"w"d=[a];+a;?d=0>y;?d<32>w;?d>7eh>w;e=b;e+d;[e]=33;^w;"y"b+32;"v"conout.say:b;bye;

Tidak ada komentar, baca saja sumber yang dikompilasi menjadi biner. Simpan sebagai a.txtatau tidak akan dikompilasi!


4
Tidak, JSFuck lebih panjang.
Joe Z.

4

Brainfuck, 133 123 114 110 byte

++++++++++++++++[->++++++>++>+++>++++>++<<<<<]>-->>->->+[---<.+.+<.+<.+<.+.+.+>>>>]++[-<.+.+.+<.+>>]<+.<+.<++.

Sedikit lebih mengutak-atik solusi sebelumnya (sebelum saya menyadari di bawah ini lebih kecil - meskipun ini sebelum saya melakukan optimasi berat). Ini bekerja dengan menyimpan 4 set nomor ascii dan mencetaknya dengan beberapa perulangan rumit, dan kemudian memberikan karakter yang hilang sesudahnya (yaitu yang berada di antara nomor ascii yang tidak valid).

Pengiriman asli

>>+++++++++++[<+<+>>->++>+++<<]<++>>++++++>>+++++[-<<<++++++>>>]<<<+<<[->>+.<<]>>++.++<[->+.<]>++.+>[-<+.>]<++.+>>[-<<+.>>]

Ini melakukan hal berikut:

  • Buat 4 register yang berisi 11. 13, 28, 33
  • Buat angka 5 dengan nilai 31 untuk memulai pencetakan
  • Cetak ascii 32-42 (11)
  • Cetak ascii 44
  • Cetak ascii 47-59 (13)
  • Cetak ascii 61
  • Cetak ascii 63-90 (28)
  • Cetak ascii 92
  • Cetak ascii 94-126 (33)

4

Haskell (70)

import Data.List
main=putStrLn$[' '..'~']\\" \\\"$'.=DLS[]aimnoprstu~"

Solusi duplikat-karakter-dalam-program-dalam-string, kurangi-dari-universal-membosankan. Jauh dari pemenang codegolf, meskipun mengejutkan terbaca panjangnya.

(Sekarang dengan pengurangan daftar bukan filter/ notWith.)


Anda dapat mengubah import Data.Listkeimport List
haskeller bangga

. @ proudhaskeller ya, benarkah? Tampaknya tidak berfungsi ketika saya mencobanya dengan runhaskell: "Tidak dapat menemukan modul 'Daftar'". Saya perhatikan saya salah menghitung jumlah karakter, jadi saya memperbaikinya.
FireFly

1
yah, itu aneh, coba saja dengan ghc atau ghci? Ini bekerja untuk saya
haskeller bangga

@proudhaskeller nggak, tidak bisa berfungsi. Ini dengan GHC 7.8.3.
FireFly

3

J - 21

(u:32+i.97)-.1!:1<":5

tulis ini ke file yang disebut 5di direktori saat ini. Kemudian muat jalankan skrip dengan0!:1<'5'

Atau 25 tanpa trik file:

(-.~".)'(":u:32+i.0-~95)'

Kode sumber berisi ', yang tidak dihapus dari output.
FireFly

3

Clojure (142, 106, 103)

(defn -main[](let[c"(fn[l](pr(reduce disj(set(map char(range 32 126)))l)));-\\\"o"]((load-string c)c)))

diformat:

(defn -main []
  (let [c "(fn[l](pr(reduce disj(set(map char(range 32 126)))l)));-\\\"o"]
    ((load-string c) c)))

Pikir ini yang melakukannya, mungkin perlu beberapa penyesuaian. keluaran:

#{@ ` ! A B b # C $ D % E & F ' G H I * J + K k , L M . N / O 0 P Q q R S 4 T 5 U V v 7 W w 8 X x 9 Y y : Z z { < | = } > ^ ? _}

menjalankan string, yang merupakan kode clojure yang dapat dievaluasi, dengan sendirinya. String memiliki beberapa komentar di bagian akhir untuk mendapatkan karakter yang digunakan di luar string (metode utama, dll)


3

Python 2, 69

for x in range(38):print chr(x+59)#!"$%&'*,-./012467bdjklmqsuvwyz{|}~

Saya menggunakan urutan chars terus menerus terpanjang (yang saya dapat temukan) yang dapat saya cetak dan tambahkan yang lain sebagai komentar setelah kode.


8
Saya tidak akan mengungguli apa pun yang memiliki komentar
John Dvorak

Jawaban saya harus menunjukkan cara terburuk yang mungkin untuk menyelesaikan tugas ini. (Gunakan celah komentar).
Johannes Kuhn

9
ok ... kecuali untuk yang polyglot yang ada tapi komentar.
John Dvorak

@JohannesKuhn Namun, karena ini adalah kode terpanjang yang berfungsi, itu tidak akan memenangkan kontes. : P
Joe Z.

5
@ Joz. ia menang dengan selisih yang lebar jika Anda membaginya dengan jumlah bahasa yang digunakan
John Dvorak
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.