Programınızın sahip olmadığı her karakteri yazdırın


219

Göreviniz tam yazdırılabilir ASCII uzayda karakterleri (yazdırır (sadece yazdırılabilir ASCII karakterleri ve / veya sekmeleri ve yeni satır kullanarak) bir program oluşturmaktır 0x20için 0x7e) yok ancak, herhangi bir sırada (programınızın kaynak kodunda görünür İstediğin çoğu

Herhangi bir dilde bunu yapmak için en kısa kod kazanır.


19
Onlar, ancak aralıkta değiliz 0x20etmek 0x7e"yazdırılabilir ASCII karakterleri" olarak tanımlanmaktadır. Teknik olarak sekmeler ve yeni satırlar aslında kontrol karakterleridir.
Joe Z.

3
Yeni satırları (veya yazdırılamayan diğer ASCII karakterlerini) yazdırmamıza izin verilir mi?
Flornquake

1
Sekmeler ve yeni satırlar, yazdırma konumunu işgal edecek şekilde oluşturulmaz. Pozisyonu değiştiriyorlar. ANSI C "isprint" fonksiyonuna bakınız.
Kaz

1
Bu soru nasıl yeniden gündeme geldi? Tekrar oy almaya başladı.
Joe Z.

3
@Timwi: Bunu yapmak istiyorsan, CJK karakter alanındaki tüm karakterleri de çıkarman gerekir (kodunda görünenler hariç). Yönetmek çok zor, bu yüzden sadece ASCII ile sınırlandırdım.
Joe Z.

Yanıtlar:



274

Polyglot, 95

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

Hiç birşey yapmıyor.


19
Hayır, ama bu bir poligon. Bunu mahvetmek istemiyorum.
Johannes Kuhn

95
Bunu GNU Fortran derleyicisine besledim ve parçalandı.
marinus

12
C de #undef X;whatever junk you wantçalışır.
13'te ugoren

6
Python'da da çalışır (çünkü #Ruby ve Perl gibi yorumlar için kullanılır )
Doorknob

87
"Bunu herhangi bir dilde yapacak en kısa kod kazanır." Herhangi bir dilde çalışan bir kodun eksikliği için , bu giriş en fazla dilde çalışan kod olduğundan kazanmalıdır. ;-D
msb

142

PHP 5.2, 4

<?<<

Adlı bir dosya olarak kaydetme NYUIOMK()'DEAQRWVX[Z]\^@CBGFJqwv{z}|~`bgfkj203547698;=>!#"%$&+*-.phpbir yerlerde /home. short_open_tagolması gerekir OnGözlerinde farklı php.ini.

Çıktı:

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

42
Haha, kuralların iyi bükülmesi.
Johannes Kuhn

6
Güzel, ama ne yazık ki :çıktıda bir nokta bulabilirim .
Howard,


78
Minnettarım @HuyWith TheHat ile, ama bunu dünden önce yaklaşık bir yıl önce cevapladım.
Ry

9
@ TheGuywithTheHat Bu, kaçağın komik, yeni olduğu ve bağlantılı meta gönderinize yönlendirdiği yanıtlardan biriydi. Şimdi artık değil.
Johannes Kuhn

48

JavaScript - 88

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

"bcdfghijkmnpquvxyz" yazdırır


13
Wow toLowerCase fikrini beğendim, bu harika!
Pierre Arlaud

2
Biraz matematikle üç karakter kaydedebilirsiniz: "!#$%&*+,-13:<=>?@[\]^_`{|}~AERTOWS";alert('BCDFGHIJKMNPQUVXYZ'.toLowerCase()+95*72)çünkü 95*72= 6840ve boş karakterlerin bir dizeye taşınması, bunları israf etmek yerine tırnak işaretleri kullanmanıza izin verir. Bunun yanı sıra, bir yorumdaki karakterleri gizlemek sevimsiz geliyor.
Şemsiye

28

Boşluk, 61 57 karakter

En kısa değil ama muhtemelen en basit mantığa sahip (gerçekten sadece bir döngü).

Burada S tamamen boşluk bırakıldı, T sekmeli, L satır beslemeli:

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

Yukarıdakileri düzeltmek için @rese teşekkürler (şube talimatı için ek kopya gerekir) ve daha küçük sayıları yığına itmek için.


1
Bu, olduğu gibi çalışmaz, ancak koşullu dalın (LTTSL) hemen öncesine yinelenen bir yığın üstü (SLS) eklenerek düzeltilebilir - şartlı dal komutu, yığının tepesini kaldırdığı için gereklidir . Sonuçta ortaya çıkan 64 karakterlik program reklamı yapıldı. (Program .ws uzantılı bir dosyada saklanırsa, çevrimiçi olarak golf.shinh.org/checker.html adresinden test edilebilir )
res

1
Ayrıca, program uzunluğu azaltılabilir 57 hemen hemen aynı program kullanılarak ama üç numara -94, 127, 126, sırasıyla, 32, 1, 126 değiştirildi itilir: SSSTSSSSSL LSSSL SSSTL TSSS SLS SLS TLSS SSSTTTTTTSL TSST LTTSL LLL.
res

5 yıldan fazla geçtiğini biliyorum, ancak S etiketini (boş) olacak şekilde değiştirerek ( LSSSLolur LSSLve LTTSLolur LTTL) ve sonunda çıkışı (üç LLL) kaldırarak 5 baytlık golf oynayabilirsiniz . Vurgulama ve açıklama ile çevrimiçi ham 52 bayt veya burada deneyin .
Kevin Cruijssen,

22

C, 83 74 69 karakter

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

Gerçekten 80 karakterin altına indirmeye çalıştım, ancak henüz başaramadım. Sonunda elimden gelenleri göndermeye karar verdim, benim (veya başkasının) bunu gönderdikten on dakika sonra 79 karakterli bir çözüm bulacağım. Tamam, on dakika değildi, ama prensip olarak işe yaradı.

Gerçekten kaynak kodunda boş bir alana sahip olması gerekmeyen bir sürümü yayınlamak istedim, ancak bir avuç çözüm arasında zıplayan garip bir çekicinin yörüngesine indi. Onlardan birini kararlı bir çözüme sokmaya çalıştıktan birkaç dakika sonra pes ettim ve alanı ekledim.


21

Golfscript, 26 24 karakter

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

Bir aralık oluşturma komut dosyasını alır, çoğaltır, yürütür, sonucundan çıkarır, ardından sonuç çıkarma kodunu ve diğer alıntı karakterini çıkarır.


2
Kahretsin, bu zekice.
marinus

1
Kaldır ''+çıkarma önce kaçmak, programı, bir NOOP koymak .;> - yerine dize kullanımı kod bloğunu (nokta kapsayacak şekilde daha iyi bir yol bulamadık) {126,33>`-.;}.~16 karakter olan
Howard

Ve herhangi bir sırayla kullanarak , istediğiniz kadar birçok kez noktalı virgül de kaldırabilirsiniz.
Howard

@ Korkarım fikrinizi anlamıyorum. Ayrı bir cevap olarak gönderebilirsiniz.
John Dvorak

@PeterTaylor Bir alan yazdırdığımı sanıyordum?
John Dvorak

20

Balık - 80

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

Balık hataları çıktığında "bir şey balık kokuyor ...". Z hatalı bir komut olduğundan, hemen hata veriyor


17

Yarışma kazanmadığını biliyorum. Sadece normalde kullanılmayan bir dilde denemek istedim, sadece tekmeler için.

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:"");}}

Satır sonları ve sekmelerle

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:"");
    }
}

Çalıştıysanız dikkatli olun: program sonlandırılmaz. haha

açıklama

  1. for(char c=0;;c++): A bir chargibi değerlendirilebildiğinden int, buradaki avantajımı, tüm olası değerlerini artırmak için kullanıyorum c. Programın sonlandırılması gerektiği belirtilmediğinden, karakterlerden tasarruf etmek için döngüdeki sonlandırma koşulunu (iki noktalı virgül arasına girecek olan) atlarım. :)
  2. "publicas{tvodmn(Srg[])h=0;w+ye.\"\\xO<?:} ".indexOf(c)<0?c:"": Ne yazık ki, çok şık bir yaklaşım değil, ama işi halleder. Kaynak kodunda bulunan her karakteri Stringdeğişmez olarak manuel olarak listeleyin , ardından akımın char ciçinde olup olmadığını kontrol edin indexOf(). Eğer indexOf()çağrı geri gelirse, -1mevcut olmaz ve bu yüzden yazdırmalıyız. Geri kalan kısım sadece karakter ve alan kazanmak için üçlü operatörü kullanır.

biraz açıklayabilir misin
joey rohan

1
@joeyrohan Elbette, altına bir açıklama ekledi. :)
asteri

cool;) güzel şeyler :)
joey rohan

2
ENTIRE ascii basılabilir tablosunu bir yoruma ekleyebilir ve hiçbir şey döndürmeyen bir java programı oluşturabilirsiniz. Seninkileri
yenerdi

9
Terminalimde çalıştırmadan önce bunun her bir Unicode karakteri basacağını söylerdin.
nyuszika7h

14

Perl, 49 karakter

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

Bu ilginç bir zorluk - bu bir çeşit anti-quine ve programda görünen karakter aralığını artırarak programı birkaç kez kısaltmayı başardım .


14

Ruby, 81 78 68 66 62 57

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

Basitçe kendini kontrol eder. Yinelenen karakterler el ile kaldırıldı.

4 karakter kaydettiğin için Josh'a ve 5 karakter kaydettiğin için minitech'e teşekkürler!


$> << x'den sonra bitiş satırlarından birini kaydetmek için if koyamaz mısınız?
Josh

@Josh Evet. Bunu şimdi yapacağım.
Doorknob

58'e götürebilirsin:(?!..?~).map{|x|$><<x if/[()ifmap{}|x?!.~\/\\\[\]$><]/!~x}
Ry-

1
Ah, ve değişken ismi daha iyi bir seçim ile, 57:(?!..?~).map{|a|$><<a if/[()ifmap{}|?!.~\/\\\[\]$><]/!~a}
Ry

$><<((32..126).map(&:chr)-IO.read(__FILE__).chars).joinFarklı bir yaklaşım kullanarak 55 bayt.
twe4ked

14

Befunge (48)

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

Çıktılar: {zyxwvutsrqponmlkjihgfedcba` _ ^] [ZYXWVUTSRQPONMLKJIHGFEDCBA240


Kutsal inek! İyi iş!
Cruncher 28:13

12

Çok ciddi değil, ama gitmem gerekti:

JSFuck (138152)

(burada derlenmiş kaynak)

Orjinal kaynak:

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

() + [] Hariç tüm karakterleri yazdırır !


2
(x)<=> [x][+[]], kod boyutunu artırır ancak alfabenin daha küçük olmasını sağlar.
FireFly

12

Göreviniz bir program oluşturmak (yalnızca yazdırılabilir ASCII karakterlerini ve / veya sekmeleri ve yeni satırları kullanarak)

Tanrım, APL için zorlaştırdın (Bu kasıtlı mı?)
Bu yüzden Tüm Kuralları Yoksaymaya karar verdim !!!

APL (Dyalog), 3 10

⎕AV

Atomik vektörü yazdırır (tüm yazdırılabilir ASCII karakterlerini içerir)


Anladığım kadarıyla "olmadan" kısmını unuttum ...
Ama bu kolay bir düzeltme

⎕AV~'AV'''

~'AV'''exclude ( ~), A, V karakterleri ve tekli teklif (iki misli tekli tırnak işareti olarak kaçılır) anlamına gelir.

ASCII olmayan baskıyla ilgili olarak, Tüm Kuralları Yoksayım.


"[s] tam olarak programınızın kaynak kodunda görünmeyen yazdırılabilir ASCII alanındaki ( 0x20- 0x7e) karakterleri yazdır " Çıktının, yazdırılabilir ASCII alanının dışındaki karakterleri içeremeyeceğine inanıyorum " ve programınız 'A' ve 'V' içeriyor, bu yüzden basılmaması gerekiyor.
FireFly

1
En azından ~dışlanan karakter kümesine eklemek isteyeceksiniz . ;-) Btw, benzer bir J çözümü olurdua.-.'a.-'''
FireFly

2
Tüm Kuralları Yoksayabilirsiniz, ancak bu sizi kabul edilen cevap olmaktan çıkarır.
Joe Z.

11

GolfScript ( 18 16 karakter)

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

Doğruluk kontrolü yapan ve hatalı karakter sayısını gösteren ekstra bir satıra sahip çevrimiçi demo .

(Çeşitli eşdeğer alternatiflerim var. @`^İle değiştirilebiliyor \\`; #değiştirilebiliyor `veya değiştirilebiliyor ]. Doğru kombinasyon Howard'ın hilesiyle 15 puanını eşitlemek için kullanılabiliyor, çünkü ters eğik çizgiler dize değişmezlerinde olduğu gibi bloklar halinde kaçmak zorunda değil: {),\`^32>].~}.~Ancak Howard bu numara için krediyi hak ediyor).



2
Neyse ki ascii biter }~- kod blokları için daha da iyi, yeni cevabımı görün ;-)
Howard

11

Brainfuck, 173

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

Çok uzun zaman sonra tekrar deneyebilirim.


6
hiçbir şey yapmayan bir program yazıp geri kalanı kaynağa ekleyin, en kötü durum 96 karakter gibi geliyor.
Jasen

10

J ( 5240 )

Düzenleme: Duh, unuttum e.

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

Eski versiyon:

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

Diğer değişken (aynı uzunluk fakat daha az çıkış):

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

@JanDvorak: yazım hatası
marinus

Kahretsin! Ruby'de seni
yenecek kadar alçaltacağımı

Yeni olan çok daha quiney görünüyor.
John Dvorak

1
@Doorknob: Sadece 24 karakterlik APL'de bir tane var ama içinde ASCII olmayan karakterler var.
marinus

Evet, APL gibi dillerden sakınmak için ASCII işini yaptım.
Joe Z.

7

Python 3 - 68 61

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

... iyileştirmeler için @WolframH'e teşekkürler.


1
Sana koyabilirsiniz düşünüyorum exec(x)yeni bir hat ve kaydedin ;in x. Ayrıca, Python 3'te x=r"print(*set(map(chr,range(32,127)))-set(x+'=\"'))"\nexec(x)61 karakter için kullanabilirsiniz (izin verilen birden çok alanı yazdırır).
WolframH

@WolframH ustaca, teşekkürler!

7

PowerShell: 96

Bir komut dosyası olarak kaydedilmeli ve çalıştırılmalıdır.

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

diffiçin yerleşik bir takma addır Compare-Object.

gciçin yerleşik bir takma addır Get-Content.

$MyInvocation.InvocationName yürütülen betiğin tam yolunu alır.

32..126için ondalık eşdeğeridir 0x20..0x7eve bu nedenle aradığımız ondalık ASCII kodunun bir dizisini oluşturur.

[char[]]Bir sonraki nesnenin içeriğini alır ve onları bir diziye koyar, parçalar ve ASCII karakterlerine dönüştürür. Böylece, şimdi iki ASCII karakter dizisine sahibiz - biri bu senaryodan, diğeri ise meydan okuma kriterleriyle tanımlanmış.

-PaCompare-Object"Passthru" biçimine ayarlar , bu nedenle yalnızca girişler arasında farklı bulunan öğeler konsolda çıkarılır - hangi girişin nesnenin verilerinde hala girişin bulunduğu, ancak görüntülenmeyen göstergeler.

|?{$_.SideIndicator-eq'=>'}boruların Compare-Objectçıkışını Where-Object, yalnızca ikinci girişe özel olan öğelere filtreleyen çıkışlar .


Aklı başında ve öğretici.
Stéphane Gourichon

7

PHP - 92

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

Çıktı:

hiçbir şey değil

OP kullanılmayan tüm karakterleri yazdırmayı istiyor, ben hepsini kullanıyorum


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

Sadece tüm karakterleri kullanan bir sunum olacağını biliyordum.
MilkyWay90

Bu karakterleri kullanmaz!;>Xn
Jo King,

6

Javascript, 92

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

Bu adil bir çözüm mü? alert ('! "# $% ^ * + / -. / 0123456789:; <=>? @ ABCDEFGHIJKLMNOPQRSTUVWXYZ [] ^ _` bcdfghijkmnopqsuvwxyz {|} ~') 95 karakterle gelir ve cehennem gibi dilsizdir: - p
tristin

2
@tristin: P yeah javascript, string'e charcode konusunda biraz ayrıntılı. Programınızın sahip olmadığı her karakterin çıktısı yok mu?
Uyardığınız

1
Haha, aman. Oh iyi.
tristin

6

Java - 126 karakter

minimize:

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

unminimized:

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

Bu ilginç bir sorundur, çünkü bireysel semboller karakterleri yeniden kullandığı için uzun formlarından faydalanabilir. Örneğin, normalde String[]daha kısa olur, ancak String...koşullu dizgede köşeli parantezlere olan ihtiyacı ortadan kaldırır.

İşin püf noktası, aralığın başında ve sonunda karakterleri denemek ve kullanmaktı, böylece sadece döngü başlangıcınızı ve sonunuzu değiştirerek onları çıktıların dışında tutabilirsiniz.

Java için dışlanacak anahtar bir karakterdir ", çünkü dizgede bunun olması kaçmak ister, ekleyen \dizeye gitmek için programınıza eklenir \\. "Koşullu dizginizden çıkardığınızda 4 karakter kaldırırsınız. Bu, kullandığınızdan ve !döngü baştan başladığınızdan emin olarak sağlanabilir #.

Bütün küçük harfler, yalnızca sona aralığının sonuna yakın görünen {, |, }ve ~peşlerinden. Java'nın ayrıntılarından dolayı, küçük harflerin çoğu sadece kazan için kullanılır. Aynı şekilde {ve }bir Java programı için de önemsizdir, çünkü kazan için bunlara ihtiyaç vardır.

|Bir şartınız veya koşulunuz varsa kullanılabilir, ancak sadece |bit bitli bir operatör olarak kullanmaktan daha kısa bir programa yol açan programdan yararlanmanın bir yolunu bulamadım . Bu |0beni biraz kirli hissetmeme neden oluyor, çünkü karaktere sahip olabilmek için bir tek parça bu.

~0Verimler -1kullanışlı, çünkü kullanmamız gereken kontrol budur indexOf. Bunu !=koşullu döngü için kullanmakla birleştirmek , <karakteri tamamen ortadan kaldırır; bu, koşullu dizginin içine girmesi gerekmediği anlamına gelir.


5

sh (47)

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

Kendi kendine referans yaklaşımını kullanır. /dev/urandomSonunda her sekizliyi en az bir kez çıkacak şekilde varsayar . Fesih değil.

Eğer bunun manyüklü olduğunu varsayarsak, bunun yerine man ascii(7)sayfasından faydalanabiliriz (ve böylece sonlandırma programına sahip olabiliriz) ( 44 karakter, teşekkürler Fennec).

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

Muhtemelen tüm oktetlere sahip olması garantili olan, daha kısa bir isimle, başka bir dosya kullanabilir misiniz? ve hatta sona erebilir? / Dev / memory gibi bir şey düşünüyorum.

farz edersek, varsayalım manve zshyüklüyse, man zshallkriterlere uygun görünüyor. Bunu bir varyasyon olarak ekleyebilirim.
FireFly

man asciisanırım sana başka bir mektup kurtarabilir.

Hangisini trkullanıyorsun? GNU trdavranır -in " cat $0çıkışını keser bir dizi operatörü olarak".
Toby Speight

BTW, eğer asciiprogram kurulu ise, yerine kullanabilirsiniz man ascii.
Toby Speight

5

BitShift , 1038 bayt

BitShift, yalnızca destekleyen 0ve 1sözdizimi olan bir dildir . Diğer tüm karakterleri yazdırmanın kolay olacağını düşündüm, ancak döngülemeyi gerçekten desteklemediği için hala büyük bir 1038 bayta ulaştı.
Bununla birlikte, bundan daha küçüğüne inanmanın mümkün olmadığını düşünüyorum.

101001100101011011010100110111010100100101011001101111010100100101011001000101011011010100101100110110101001001010110010001010110110101000001101010010010101100100010101101101010000010000011001010110110101000010000101011011010100110111010100100101011111100101011011010100110111010100100101011001101111010100100101011001000101011011010100000000011010100100101011001000101011011010100110010000101011011010100110111010100100101011001101001101010010010101100100010101101101010011001000010101101101010011011101010010010101111011111110010101101101010011011101010010010101100101100101011011010100010001010110110101001000010101101101010011011101010010010101110111110010101101101010011011101010010010101111111100101011011010100110111010100100101011111011110101001001010110010001010110110101001000100000101011011010100110111010100100101011111010011010100100101011001000101011011010100100000101011011010100110111010100100101011001101111010100100101011001000101011011010100010000010101101101010011011101010010010101101001101101010010010101101001101010

Baskılar

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

Burada dene


4

Kesinlikle buradaki en uzun çözüm, ancak Lino'da kodlama her zaman eğlencelidir:

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;

Yorum yok, sadece ikilinin içine derlenmiş kaynağı okur. Farklı kaydet a.txtveya derlenmeyecek!


4
Hayır, JSFuck olanı daha uzun.
Joe Z.

4

Brainfuck, 133 123 114 110 bayt

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

Eski bir çözümle ilgili biraz daha titizlikle (aşağıdakinin daha küçük olduğunu fark etmeden önce - bu durum biraz ağır optimizasyon yapmamdan önceydi). Bu, 4 ascii kümesini saklayarak ve onları zorlu bir ilmekle bastırarak çalışır ve daha sonra eksik karakterleri (yani geçersiz ascii sayıları arasında olanlar) verir.

Orijinal gönderim

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

Aşağıdakileri yapar:

  • 11 içeren 4 kayıt oluşturun. 13, 28, 33
  • Yazdırmaya başlamak için 31 değeriyle 5. yaratın
  • Ascii yazdır 32-42 (11)
  • Ascii 44 yazdır
  • Baskı 47 - 59 (13)
  • Ascii Yazdır
  • Ascii Yazdır 63-90 (28)
  • Ascii 92'yi yazdır
  • Ascii yazdır 94-126 (33)

4

Haskell (70)

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

Sondaj sıkıcı-karakter-in-in-dizede bir program, evrensel kümeden çıkarmak bir çözüm. Bir kod dövüşçünün kazananı olmaktan çok uzak olsa da, uzunluğu bakımından şaşırtıcı derecede okunaklı.

(Şimdi filter/ yerine liste çıkarma ile notWith)


değiştirebileceğiniz import Data.Listiçinimport List
gururlu haskeller

@ @ proudhaskeller ha? Denemeye çalıştığımda işe yaramadı runhaskell: "'Liste' modülü bulunamadı". Ancak karakter sayısını yanlış saydığımı fark ettim, bu yüzden düzelttim.
FireFly

1
peki, bu garip, ghc veya ghci ile denemek? Benim için çalışıyor
gurur duyuyor haskeller

@proudhaskeller hayır, çalışmasını sağlayamıyorum. Bu GHC 7.8.3 ile.
FireFly

3

J - 21

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

bunu 5geçerli dizinde adı verilen bir dosyaya yaz . Sonra yükle komut dosyası ile çalıştırmak0!:1<'5'

Dosya numarası olmadan 25 veya:

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

Kaynak kodu ', çıktıdan çıkarılmayan içerir .
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)))

biçimlendirilmiş:

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

Bunun yaptığını düşünün, biraz tweaks gerekebilir. çıktı:

#{@ ` ! 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 { < | = } > ^ ? _}

değerlendirilebilir clojure kodu olan dizeyi kendi üzerinde çalıştırır. Dize sonunda dize dışında kullanılan karakterleri almak için bazı yorumlar vardır (ana yöntem, vb.)


3

Python 2, 69

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

En uzun (bulabildiğim) sürekli karakter dizisini yazdırabilir ve diğerlerini koddan sonra yorum olarak ekleyebilirim.


8
Bir yorumu olan hiçbir şeyi oylamayacağım
John Dvorak

Cevabım bu görevi çözmek için mümkün olan en kötü yolu göstermelidir. (Yorum deliğini kullanın).
Johannes Kuhn

9
Tamam ... hiçbir şey olduğunu polyglot haricinde ama bir açıklama.
John Dvorak

@JohannesKuhn Ancak, çalışan en uzun kod olduğundan, yarışmayı kazanamayacak. : P
Joe Z.

5
@JoeZ. Çalıştığı dil sayısına bölünürseniz geniş bir farkla kazanır
John Dvorak
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.