Deliksiz kullanarak tüm delikli yazmak


55

ASCII karakterleri 126'ya kadar ondalık kod 33 şunlardır:

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

Çoğu fontta, bu karakterlerden 25 tanesinde içlerinde "delikler" olduğuna dikkat edin: ( 0'dan büyük bir cins diyebilirsiniz)

#$%&04689@ABDOPQRabdegopq

Diğer 68 "açılmayan" karakter:

!"'()*+,-./12357:;<=>?CEFGHIJKLMNSTUVWXYZ[\]^_`cfhijklmnrstuvwxyz{|}~

Göreviniz, yalnızca her bir sıra karakterini tam olarak bir kez çıkaran çıkarılan karakterleri kullanarak mümkün olan en kısa programı yazmaktır.

Boşluk, Sekme ve yeni satırlar (Satır Beslemesi ve / veya Satırbaşı Dönüşü) boş olduğundan, programınızda veya çıktısında görünebilir. Hala karakter sayısına güveniyorlar. Diğer ASCII karakterleri kullanılamaz (ve kesinlikle ASCII olmayan karakterler).

notlar

  • Tüm açılmamış karakterleri veya her birinden yalnızca birini kullanmak zorunda değilsin.
  • Çıktı deliksiz karakterler içermeyebilir.
  • Boşluk dil kullanılabilir.
  • Çıktı stdout'a gitmeli veya bir dosyaya gidebilir. Giriş olmamalıdır.

Bonus: Sadece eğlence için, deliksiz karakterleri kullanarak tüm deliksiz karakterleri yazdırmayı deneyin. Mevcut bir dilde yapılabileceğinden şüpheliyim.


9
Başlık için +1. Biz böyle aşk şeyler bu .
Jacob

1
Perl çözümü nerede?
Pierre Arlaud,

4
Eh, Haskell veya C'de çözüm yok; Eğer istediğin bir programsa, o zaman hecelemelisin main.
Rhymoid

2
Bonus, boşluk kullanarak yapılabilir.
Joshua,

1
Hiç kimse unuttuğumu nasıl farketmedi ~?
Calvin'in Hobileri

Yanıtlar:


18

Pyth , 43 35 karakter

tTFk"*+,-7;=?GHIKVWXYhiklnvwx"C-Ck7

Burada dene .

9 başlangıçta, yeni satır ayrılmış olması dışında sırayla karakter yazdırır.

Dize, 9 karakterinin @ olması haricinde, ihtiyaç duyulan karakterlerden daha büyük olan tüm karakterleri 7 içerir, bu nedenle özel kasalıdır. @Howard sayesinde algoritma.

Açıklama:

tT                print(10-1)                T=10, t(x)=x-1 if x is an int.
Fk"<string>"      for k in "<string>":
C-Ck7             print(chr(ord(k)-7))       Note that C is overloaded as ord and chr.

24

GolfScript, 37 36 karakter

[":=<?)-/! YX[]VIHKx{}|~vih"{25^}/]+

Kodu burada deneyin .

Dize, 25 ile xor'ed yasak karakterleri içerir. Neyse ki tüm karakterler geçerli olanlarla eşleştirilir.


22

Brainfuck 119

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

ah, --başlangıçta ... Oradaki ilk kayıtta 254'e geri mi dönüyorsunuz?
WallyWest

1
Yup :) Döngüyü 36 kısaltır (35'e ulaşmak için)
Teun Pronk

Şey, kesinlikle benim
275'imi

@ Calvin'in Hobileri Hiçbir girişe izin verilmediğinden eminim, üzgünüm. OP yine de netleştirmek isteyebilir.
isaacg

@ isaacg biliyorum, bu yüzden ana kodum girdi almıyor ve son örnek ciddi bir örnek değil :)
Teun Pronk

20

Bonus - dc, 179 karakter

Güzel P, izin verilen başka bir kısıtlanmış karakter seti mücadelesi .

6A44469PD684P44D4898PDB99P4008D0BP486B48BPA60BPD096P4A68666P460A0D4P690490AP8084088P6B6AB66P6BBB608P80D4BAAPA046PBAD4P60A6668P480DD96P4A040BBP848BP40DD8D0P46840B6P696B48BP48D64BAP

Çünkü dcaçıklamayı gerektirecek kadar belirsiz göründüğü için (buradaki tuhaf şeyleri düşünürken bana garip geliyor!) Genel bir bakış:

Öncelikle rastgele-hassas aritmetik ile bir RPN hesap. Ancak bu zorluk için, Pbir sayıyı 256 tabanındaki bir dizi karakter olarak yorumlayan ve bunları basan komuttan faydalanıyorum . Örnekler: 65 Pyazdırır A(ASCII kodu 65). 16706 Pyazdırır AB(16706 = 65 * 256 + 66).

Bunun yanı sıra, diğer ilginç özellik ise 0-9A-Fonaltılık bir sayıda bulunmasalar bile onaltılık basamakların tümünü tanıyor olmasıdır . Ondalık giriş varsayılan, bu yüzden giriş belirteci olduğu 999anlamına gelir 9 hundreds + 9 tens + 9ve ABCanlamı 10 hundreds + 11 tens + 12için o eşdeğer hale 1122.

Rakamları ABDondalık basamakta kullanabilmek, kısmen kullanılamamayı 12357ve sıralama ve gruplama seçimini yapar. (Ben bazı sayılar gerekiyorsa x, y, zve onlar izin basamak ile gösterilemeyecek olan, o zaman ben temsil deneyin x*256*256+y*256+zyerine.)

Program muhtemelen daha büyük gruplar kullanılarak biraz daha kısa yapılabilir. Sayı başına 3 bayt geçmedim.


1
@DigitalTrauma, sorun bildiriminin sonunda Bonus'un bir başka yolunda da Bonus oldu.

Ha! Onu özledim! Mükemmel! +1
Dijital Travma

Bunu açıklayabilir misin? Bunu yönetebileceğimiz bir yer var mı?
Calvin'in Hobileri

4
Koşabileceğin bir yer mi? dc, okunması zor programlar yapmak için tasarlanmış aptalca bir dil değil, ciddi bir hesap makinesi. Herhangi bir unix makinesinde (veya cygwin) çalıştırın. en.wikipedia.org/wiki/Dc_(computer_program)

@ Calvin's Hobbies Herhangi bir Linux veya Unix makinesine (OSX dahil) erişiminiz varsa, sadece bir metin dosyası olarak kaydedin, örneğin bonus.dc, sonra çalıştırın dc bonus.dc. dc, en eski dillerden biri ve tam anlamıyla onlarca yıldır * nix'te kalıcı bir fikstür oldu. Yine de iyi bilinmemekle birlikte, muhtemelen arcane ve okunamayan RPN sözdizimi nedeniyle. Bazı kod-golf zorlukları olsa harika ;-)
Digital Trauma

12

Bash + coreutils, 56 bayt

tr \(-y \!-r<<<'*+,-7;=?GHIKVWXYhiklnvwx'
tr C-F 7-:<<<E

Şansın alacağı gibi, delikli karakterlerin ascii değerine 7 eklemek, deliksiz tüm karakterleri ("9" hariç) verir. Bu yüzden sadece bu dönüşümü tersine yaparız, sonra "9" u elde etmek için benzer bir dönüşümü ("E" den 12'yi çıkarır).

Çıktı:

#$%&0468@ABDOPQRabdegopq
9

7
İlk satırın 7 karakterden bir kaç karakterden nasıl çıkarıldığını ve -7noktalama karakterleri arasında dikkat çekici bir şekilde görüntülenenleri içerir ve bu 2 olgunun birbiriyle hiçbir ilgisi yoktur.

@ WumpusQ.Wumbley Bunu farketmedim bile :)
Digital Trauma

6

Perl - 49 Bayt

symlink".",':=<?)-/! YX[]VIHKx{}|~vih'^chr(25)x25

Bu hemen hemen Howard'ın çözümünün Perl versiyonudur. Dize 25 ile XORing. Çıktı adı olan bir dosyadır #$%&04689@ABDOPQRabdegopq. symlinkHer şey yasaklandı çünkü kullanma fikrini ve çıktı biçimini dosya adını aldım .

İşte bulduğum başka bir Perl çözümü. Muhtemelen çok geliştirilebilir ve oldukça uzundur, bu yüzden şu anda okunabilir bir biçimde bırakıyorum.

until(y/1/1/>32){s//1/}
until(y/1/1/>125+1){
    if(chr(y/1/1/)!~/[!"'()*+,-.\/12357:;<=>?CEFGHIJKLMNSTUVWXYZ[\\\]^_`cfhijklmnrstuvwxyz{|}~]/) {
        symlink".",chr y/1/1/;
    }
    s/^/1/
}

Bu bir çok dosya çıktısı alır, her birinin adı karakterlerden biridir. Yasaklı bir karakter kullanmadan dizeleri nasıl ekleyeceğimi bilemedim.

for, while, map, say, print, eval, s///e, Ve herhangi bir değişken adı (değişkenler ile başlar kullanılamaz @veya $Perl) bu zor yapılan.

Umarım dosya isimleri bir çıktı formatı olarak iyidir çünkü bilgi çıkışının her yolunda yasaklanmış karakterlerden birini kullandığından eminim.


Yaratıcılık için sana bir +1 vereceğim! Çok akıllıca kod kullanımı!
WallyWest

Bunun oldukça eski olduğunu biliyorum, ancak -pbayrak ve *_=\(... ): Online deneyin!
Dom Hastings

@DomHastings harika! Sanırım bir delikten -pbu yana bayrak yasaklanacak p.
hmatt1

5

MATLAB, 36 bayt

SO CLOSE .... Geçerli kazanandan sadece 1 byte fazla (isaacg)! Bu da, daha fazla incelemede, benim de yapmak istediklerimi çoktan yaptı. Tekerleği yeniden icat etmenin zararı yok ...

Bunun eski bir meydan okuma olduğunu biliyorum, ancak yalnızca bununla ilgilendikten sonra anladım.

['*+,-7;=?GHIKVWXYhiklnvwx'-7,57,'']

Keşke MATLAB'ı ayrı bir ''önerisi olmayan bir dize istediğimi anlayabilseydim ... herhangi biri?


4

Brainfuck 303 275

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

Brainfuck, nihai açılmamış ezoterik dil (Whitespace dışında);)


1
Lütfen eski parçaları silin, çarpma yapmayın.
isaacg

2
Kod parçacıklarınız için teklif şeylerini (gerçek adı bilmiyorum) kullandığınızı görüyorum. Kodunuzu seçmek daha kolay olabilir ve Ctrl+ K:) tuşlarına basın
Teun Pronk

@isaacg Yapıldı. TeunPronk, bitti!
WallyWest

6
Ya da sadece bir ya da iki satır olması durumunda boşluk çubuğuna 4 kez basın. @TeunPronk Bu? `Bu bir backtick. (Ayrıca " alıntı şeyleri " benim için yeni bir şey olsa da, ağır aksan olarak da adlandırılır : P)
Doorknob

1
@Doorknob O zaman ikimiz de bir şeyler öğrendik, ama öğrendiğin her neyse yanlış: P
Teun Pronk

4

JS - 196 - dene

h=(c=!1+[])[1];i=c[2*2];j=(f=[]+{})[1];this[i+'v'+h+'l'](h+'l'+i+'rt('+h+'t'+j+f[2]+'("Iy\x51lJj\\x'+2*2+'1\\x3'+~-1+'Nj\\x'+2*3+'75\x51EFC\x52E\\x3'+3*3+'\x51UVJhYm\x52lZ2\\x3'+3*3+'wc\x51=="))')

1
Tanrım, bu delilik. Görünüşe göre Js en
küfürlü

Kötü niyetli evet, ama bu benim girişimle kıyaslandığında sadece bir leke ... Üzgünüm @bebe ama bu sefer seni dışladım ...
WallyWest

1
@WallyWest savaş ilan ediyorum.
bebe,

1
217 : 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")')- satır içi l, kısaltılmış m, iilk kullanımda ilan edilmiş , tekrarlanan desenler için birkaç ekstra değişken yarattı (çıkarılan karakterlerin sırasını değiştirerek bunu muhtemelen iyileştirebilirsiniz, ancak sabrımın ötesinde: P).
Alconja

2

GolfScript, 89 karakter

71 22+,{33+}/]''+'!"\'()*+,-./12357:;<=>?CEFGHIJKLMNSTUVWXYZ[\]^_`cfhijklmnrstuvwxyz{|}'-

Basitçe tüm ASCII karakterlerinden oluşan bir dizi oluşturur ve "holed" olmayan karakterleri onlardan çıkarır.

71 22+,  # Builds array of 0..93
{33+}/]  # Converts to 33..126
''+      # Convert ASCII codes to string
'stuff'- # Subtracts "stuff" (the non-holed characters) from the string

2

Befunge 98 - 69 bayt

"()+ijWI=*">:5j2 ,-5_"157:h">:5j2 ,-1_"=>?LMN^_lmn">:5j2 ,+3_"?"1+s <

3 parça halinde yapar. Deliksiz karakter değerlerinin delikli karakterden 5 farklı olduğu bir değer. Sonra 1'den farklı olanlar ve nihayet delikli olanlardan 3 farklı olan deliksiz karakterlerin listesi. Befunge'de program sonlandırması "@" (karakter 64 değeri), yani sonunda "?" (karakter değeri 63), 1 ekleyin, sonra 's' komutunu içeren koda ekleyin.

Üçünü bir araya getirerek daha çok golf oynayabilirim

>:5j2 ,(differ value)_

bölüm, ama muhtemelen fazla değil.


2

JavaScript 240 228

İlk gönderim:

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=="))')()

Şimdi, bu harika bir başlangıç, işte böyle çöküyor ...

z=(!1+"")[1];        // assigns "a" to z, !1+"" === "false"
y=(!!1+"")[3];       // assigns "e" to y, !!1 === "true"
x={}+"";             // assigns "[object Object]" to x
w=x[1];v=x[2]        // assigns "o" to w, and "b" to v
u=z+"t"+w+v;         // creates the mystical "atob" command, yes, I'm gonna use it!
1[_="c\157nstruct\157r"][_] // sets up the primitive to a number object... this acts similar to the "window" primitive object so that I can play off functions...
z+'l'+y+'rt(         // starts creating an alert call
'+u+'("Iy\x51lJj"+'+(t=u+'("\x51\x51==")')+'+'+u+'("M"+'+t+'+"==")+"Nj"+'+u+'("Zw==")+"5\x51EFC\x52E\71\x51UVJhYm\x52lZ2\71wc\x51=="))')()
// Above line abuses atob command with a couple of nested instances of the command, also using hex and octal equivalents of characters

Sonra düşündüm ki ... "Daha basit bir yol olmalı ..." ve ...

Gözden geçirilmiş gönderi: 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=="))')

Ben kullanabilir görünce eval (birlikte @bebe ilham onu ekleme tarafından; kullanmaktan daha çok hızlıdır ki constructora constructora number...) Ben 228 için aşağı delinmiş ... Ben bu belirli Golf Turnuvasının galibi olmayabilir biliyorum , ama bu sadece JavaScript'i ne kadar kötüye kullanabileceğini ve hala istenen sonucu elde edebileceğimi gösterme yöntemim.


2

Main - Uykusuzluk , 50

FFy~~jF~y<={*n<<ztf>={.f=(tHL~k<yf={*n>Lj(FunLn<j~

Çıktıları:

abdegopq04689@ABDOPQR#$%&

Bonus - Uykusuzluk, 268

ogeeoddp@poe@ggep@oe@opge@gee@%d@p@gqeo@p@ge@e9de49ed9e4dppe@%e@geee@ge@p%ee@%e@dp@%ep@%ee@%d@%eeee@%e@%ee@%e@geee@%e@gee@ggopop@peo@ggep@p@ge@ggeep@ge@gee@%e@geee@ge@gee@ge@ppoep@%ee@%edep@gepe@ge@%ee@%e@geee@ge@%ee@%%eeoe@ge@pep@%gep@p@%e@%%eep@%e@gee@e%e@oe@%gep@p@

Çıktıları:

!"'()*+,-./12357:;<=>?CEFGHIJKLMNSTUVWXYZ[\]^_`cfhijklmnrstuvwxyz{|}~

Çıktı yeniden düzenlenirse programın uzunluğunu azaltmak mümkün olmalı, ancak bunun için arama programımı değiştirmem gerekiyor.

Sadece durumu sınırlı sayıda karakterle çalışabilecek başka bir dil göstermek için. Bu arada, kaynağında sadece 3 benzersiz karakterle hemen hemen her çıktıyı yazabilir.

Şu anda, mevcut tüm cevaplar arasında hem ana zorluğu hem de bonusu yapabilen tek dil budur.

Uykusuzluk Tercümanı .


1

Befunge 98 - 46 bayt

İsaacg'ın Pyth girişinin Befunge-ified sürümü:

"xwvnlkihYXWVKIHG?=;7-,+*">:5j2 ,-7_"?"1+:,s <

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.