ASCIIrisk çizin


25

Yıldız kullanarak şekil çizmeyi içeren çok sayıda soru var - bu yüzden, o kadar çok yıldız varken, ASCII masasını kullanarak bir tane çizmeliyiz diye düşündüm.

Meydan okuma

Göreviniz, girdi almayan ve bu metni tam olarak veren bir program veya işlev yazmaktır:

          !
         "#
         $%
         &'
         ()
         *+
         ,-
         ./
         01
23456789:;<=>?@ABCDEF
GHIJKLMNOPQRSTUVWXYZ[
        \]^_
       `a  bc
      de    fg
     hi      jk
    lm        no
   pq          rs
  tu            vw
 xy              z{
|}                ~

Başvuru için, bu site ASCII tablosunun tamamını listeler.

kurallar

  • Çıktı yukarıda gösterildiği gibi tam metin olmalıdır. Lider / takip eden boşluklara izin verilir.
  • Standart golf boşlukları geçerlidir - ASCIIrisk'i internetten okumak yok.
  • Bu , yani en kısa çözüm (bayt cinsinden) kazanır.

2
Bu zorluğu denemek istiyorum ... ama biraz riskli gözüküyor . Lütfen korkunç mizahım için özür dilerim.
HyperNeutrino,

1
Yığın Taşması'nın NoBadJokes politikası var, bu yüzden bu yorumu yoksaymam gerekecek. Üzgünüz, ancak politika

2
Tamam. Politikayı ihlal ettiğim için özür dilerim. Yorumumu yanıtlayarak yanıtladığınız için teşekkür ederiz.
HyperNeutrino,

Yanıtlar:


5

05AB1E , 40 38 37 36 35 bayt

žQ2ô376S3*£`2ôvyN·ð×ýð«}rsJ2äsr)˜.c

Çevrimiçi deneyin!

açıklama

žQ                                   # push the printable ascii chars
  2ô                                 # split into pairs
    376S                             # split the number 376 into a list of digits
        3*                           # multiply each by 3 to get [9,21,18]
          £                          # divide the pairs of ascii chars into 
                                     # pieces of these sizes
           `                         # flatten list to stack
            2ô                       # split the "legs" of the asterisk into pairs of pairs
              v                      # loop over the pairs of pairs
               yN·ð×ý                # join the pairs by index*2 spaces
                     ð«              # append a space
                       }             # end loop
                        rs           # move the middle section to top of stack
                          J2ä        # convert to a string split into 2 pieces
                             sr      # rearrange the stack in the correct order
                               )˜    # wrap in a flattened list
                                 .c  # pad each element with spaces on either side

žQ2ôÐ9£s30£R21£RøsrR18£R2ôvyN·ð×ý})˜.C», 39'um var, ama ZIP ile bir kısmını tıraş edebileceğinizi düşünüyorum.
Sihirli Ahtapot Urn

@ carusocomputing: Karakterlerin sıralı kalmasını istediğimizden zip'in burada çok faydalı olduğunu düşünmüyorum. Her şeyi başlangıçta çiftler halinde bölmek iyi bir fikirdi. Çok fazla r ve s kullanarak savurgan hissediyor ama ben etrafında bir yol görmüyorum.
Emigna

13

Python 3 , 110 bayt

s='%c';print(('\n'.join(['%10c%c']*9+[s*21]*2+[' '*(8-i)+s*2+'  '*i+s*2for i in range(9)]))%(*range(32,128),))

Şablonu oluşturur

         xx
         xx
         xx
         xx
         xx
         xx
         xx
         xx
         xx
xxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx
        xxxx
       xx  xx
      xx    xx
     xx      xx
    xx        xx
   xx          xx
  xx            xx
 xx              xx
xx                xx

ile %ciçin x, ardından dize interpolasyon kullandığı range(32,128)desen içine ASCII değerlerini ekleyin.

Çevrimiçi deneyin!

Python 2, bir bayt daha uzun, daha uzun demet açma, fakat daha kısa print.

s='%c';print('\n'.join(['%10c%c']*9+[s*21]*2+[' '*(8-i)+s*2+'  '*i+s*2for i in range(9)]))%tuple(range(32,128))

Eyfel Kulesi benzerlik ödülünü hak ediyor!
sergiol,

11

V , 54 , 50 bayt

¬ ~9ñ9É 11|á
ñ2ñ20lá
ñ$18é 9ñ^y|Ehé
Pf xxywk$hP>ñd

Çevrimiçi deneyin!

Normalden farklı olarak, bu program yazdırılamayan karakter içermiyor.

Açıklama:

¬ ~                     " Insert the entire printable ASCII range
   9ñ           ñ       " 9 times:
     9É                 "   Insert 9 spaces at the beginning of this line
        11|             "   Move to the 11'th column on this line
           á<CR>        "   And append a newline after the 11'th column

Şimdi tampon şuna benziyor:

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

Şimdi ortayı kuruyoruz:

2ñ        ñ             " Two times:
  20l                   "   Move 20 characters to the right (because 'l' == 'right', duh)
     á<CR>              "   Append a newline

Burası biraz tuhaflaştığı yer.

$                       " Move to the end of this line 
 18é                    " Insert 18 spaces before the last character
     9ñ                 " Repeat the following 9 times:
       ^                "   Move to the first non-whitespace character
        y|              "   Yank all the whitespace before the current character. 
                        "   We'll call this the "Leading whitespace register"
          E             "   Move to the end of the current WORD (up to before a space)
           h            "   Move back one character
            é<CR>       "   And insert a newline before the current character
P                       "   Paste the leading whitespace for indentation
 f                      "   Move forward to a space
   xx                   "   Delete two characters
                        "   (Note how we are inbetween the two bottom branches right now)
     yw                 "   Yank everything upto the next branch (all spaces)
                        "   We'll paste this on the line up so that we can yank it again later
                        "   To keep track of how far apart the branches are
       k$               "   Move up a line and to the end of that line
         hP             "   Move back a character and paste the whitespace we yanked
           >            "   Indent this line by one space
            ñ           "   End the loop

İşte önemli bir not. >Komut aslında bir olduğunu operatör metin üzerinde çalışmak üzere, bir argüman olmadan hiçbir şey yapmaz demektir. Örneğin,

>_      "Indent the current line
>>      "Indent the current line
>j      "Indent the current and next line
>G      "Indent every line

Fakat bu komut bir döngüde olduğundan, bir operatör vermeyerek karakter kaydedebiliriz. Bir döngünün sonunda, herhangi bir operatör beklemede ise, _örtük olarak argüman olarak (geçerli satır) doldurur .

Şimdi bu döngünün biraz garip olduğunu kabul edeceğim ve tüm metnin herhangi bir anda nasıl görünmesi gerektiğini takip etmek zor olabilir. Böylece, N döngülerinden sonra nasıl görüneceğini görmek için bu basit programı kullanabilirsiniz .

9'a ayarlarsanız, kurtulmak için biraz fazladan ek metnimiz olduğunu görebilirsiniz. (Sadece mevcut satır).

Bu yüzden şimdiki satırı ile sileriz dd. Fakat bekle! Operatörlerin bazen örtük bir şekilde doldurulan bir tartışmaya katılması gerektiğini söylemiştim. Argümanlar ayrıca program sonunda örtük olarak doldurulur. Öyle ddya da d_(eşdeğer) yerine, dV'nin _bizleri doldurmasını sağlayabiliriz .


Örtülü kötüye kullanmak güzel iş ÿ:)
Kritixi Lithos

5

Python 3 170 165 155 147 bayt

Bu kadar çok golf oynadım, nasıl çalıştığını unuttum ...

i=b=0
for x in range(32,127):a=x%2<1;c=x>90;d=x<50;print(end=[' '*9*d,['\n'+' '*(8-i),'  '*~-i][b]][c]*a+chr(x)+'\n'*(x==70or d*x%2));b^=a;i+=b*c*a

Çevrimiçi deneyin!


5

JavaScript (ES6), 156115 114 bayt

Ne yazık ki, rezil String.fromCharCode()maliyeti 19 bayt.

f=(x=y=k=1)=>k<96?String.fromCharCode(x-22?y/2^5&&(y>9?x-y+1>>1&&22-y-x>>1:x/2^5)?32:31+k++:(x=!++y,10))+f(x+1):''

console.log(f())

Biçimlendi ve yorumlandı

f = (                         // given:
  x =                         //   - x = current column
  y =                         //   - y = current row
  k = 1                       //   - k = current ASCII character code, minus 31
) =>                          //
  k < 96 ?                    // if we havent't reached character #127 (96 + 31):
    String.fromCharCode(      //   let's compute the next character
      x - 22 ?                //   if x is not equal to 22 (end of line):
        y / 2 ^ 5 && (        //     if y doesn't equal 10 or 11 (horizontal bar):
          y > 9 ?             //       and either y is greater than 9:
            x - y + 1 >> 1 && //         and we are not located on one of the
            22 - y - x >> 1   //         bottom diagonals
          :                   //       or y is less or equal to 9:
            x / 2 ^ 5         //         and x doesn't equal 10 or 11 (vertical bar)
        ) ?                   //     then:
          32                  //       append a space
        :                     //     else:
          31 + k++            //       append the next ASCII character
      :                       //   else:
        (x = !++y, 10)        //     increment y, reset x and append a LineFeed
    ) + f(x + 1)              //   do a recursive call with x + 1
  :                           // else:
    ''                        //   stop recursion

String.fromCharCode(...[...Array(n)].map(_=>k++))4 bayt kurtarmak için yapabileceğini düşünüyorum .
ETHProductions

@ETHproductions Diziyi çağırmak fikrini seviyorum String.fromCharCode()ama başka bir yaklaşıma gittim. Yine de teşekkürler!
Arnauld

3

QBIC , 153 151 bayt

[32,49,2|?space$(9)+chr$(a)+chr$(a+1)][2|X=Y[a,a+20|X=X+chr$(c)]a=a+21?X][0,8|X=space$(8-d)[0,1|X=X+chr$(a+e)]X=X+space$(d*2)[2,3|X=X+chr$(a+f)]a=a+f?X

Gerçekten sadece bir FOR-döngüler dizisi ve bir karaktere int ( chr$()) int atmak .

Örnek çıktı:

          !
         "#
         $%
         &'
         ()
         *+
         ,-
         ./
         01
23456789:;<=>?@ABCDEF
GHIJKLMNOPQRSTUVWXYZ[
        \]^_
       `a  bc
      de    fg
     hi      jk
    lm        no
   pq          rs
  tu            vw
 xy              z{
|}                ~

3

Perl , 113 bayt

112 bayt kodu + -lbayrak.

sub g{chr$c+++32}print$"x9,&g,&g for 0..8;print map&g,0..20for 0,1;print$"x-$_,&g,&g,$"x(16+2*$_),&g,&g for-8..0

Çevrimiçi deneyin!


3

PHP, 110 105 103 93 91 bayt

for(;$c<95;$y+=!$x%=21)echo"
"[$x],chr(31+($y%11<9&(max($y,10)-abs(9.5-$x++))%11<9?:++$c));

önde gelen bir yeni satır basar. Çevrimiçi olarak çalıştırın -nrveya test edin .

Temel prensip Arnauld'dan kabul edilir, ancak bu tekrar eder.
Ve PHP'nin kapalı tiplerinden de yararlanır:
string index için NULL, int, int için flo %, int için &ve boolean +=.

sözde kod ile açıklama

If $x is 0, print a newline. ("\n"[$x] is newline for $x=0; empty for every larger $x)
if $y is neither 9 nor 10 (not middle part: $y<9|$y>10 <=> $y%11<9)
AND distance to center == abs(9.5-$x) (in [0.5,1.5,..,10.5]) ->
    lower part:     abs($y-10-distance)>1                   => ($y-distance)%11<9
                (this works because $y is always <20)
    upper part: $x<9|$x>10 <=> distance>1 <=> 10-distance<9 => (10-distance)%11<9
                (this works because % has negative results for negative first operands)
    both parts: $y>9?$y:10 <=> max($y,10)
// $a?:$b evaluates to $a if $a is truthy, to $b else
// and the ternary condition evaluates to 1 if the coords are not in the shape
then print chr(31+1) = space
else print chr(31+incremented $c)

2

Pyth , 53 bayt

js.e@[+L*9;cb2c2b.e+*-8Ydj*yYdZcL2cb4)kcsrdC127,18 60

Sonucu basan bir program.

Çevrimiçi deneyin!

Nasıl çalışır

srdC127 yazdırılabilir ASCII karakterlerinin bir listesini oluşturur ve bunu bir dizeye birleştirir.

c....,18 60indeksleri bu dizeyi böler 18ve 60üst, orta ve alt: çıkışının farklı bölgelerine karşılık gelen üç dizeleri listesini vererek.

.edizeleriyle olduğu gibi dizeleri üzerinde bve dizinleri ile birlikte numaralandırılmış bir harita başlatır k.

[...)Diyagramın her bölümü için istenen eylemi içeren bir liste oluşturur. Geçerli eylem ile listeye indekslenerek doğru işlem seçilir @...k.

  • Üst

    cb2dizgiyi karakter çiftlerine böler ve her çift için boşluklar +L*9;hazırlar 9.

  • Orta

    c2b dize iki eşit uzunluklu dizeye böler.

  • Alt

    cL2cb4 dizgiyi dört karakterden oluşan gruplara ve her grup çiftler halinde böler.

    .enumaralandırılmış bir haritayı başlatır, dize çiftleri Zve bunların indeksleri Y.

    j*yYdZçiftleri 2*Yuzayda birleştirir ve uzayı +*-8Ydhazırlar 8-Y.

jstüm sonuçları birleştirir ve sonuç listesine yeni hatlarda katılır. Bu daha sonra örtük olarak yazdırılır.


2

Haskell , 144 bayt

b!n=[1..n]>>b
('*':r)#(a:s)=a:r#s
(a:r)#s=a:r#s
r#s=r
p="**"
f=unlines([" "!9++p]!9++["*"!21]!2++[" "!(8-n)++p++" "!(2*n)++p|n<-[0..8]])#[' '..]

Çevrimiçi deneyin!

Açıklama:

b!n=[1..n]>>b!Bir listeyi veya string b n-times'i tekrarlayan bir fonksiyon tanımlar .

unlines([" "!9++p]!9++["*"!21]!2++[" "!(8-n)++p++" "!(2*n)++p|n<-[0..8]]) yıldızların yıldız işaretini çizmek için bu işlevi kullanır (Oh, ironi!):

         **
         **
         **
         **
         **
         **
         **
         **
         **
*********************
*********************
        ****
       **  **
      **    **
     **      **
    **        **
   **          **
  **            **
 **              **
**                **

#*Bir dizgede ardışık olarak belirli bir listedeki karakterlerle değiştirilen bir işlev olarak tanımlanır . Yıldızların yukarıdaki yıldız işaretiyle ve [' '..]boşluk ile başlayan tüm karakterlerin sonsuz bir listesi olarak adlandırılır ' '.


Partiye süper geç kaldım ama bu " "!(2*n)olabilir "(TWO SPACES)"!n.
Lynn,

2

Kömür , 39 bayt (rekabetçi olmayan)

GH↑χ→⁴↓χ→¹¹↓⁴←χ↘χ←⁴↖⁹←²↙⁹←⁴↗χ←⁹↑⁴→⁹ ↓¤γ

Çevrimiçi deneyin! AST, açıklama için sağlanan, χiçin önceden başlatılmış değişken 10.


2

J, 63

(yarışmıyor)

a.{~32>.31+20 21$(* +/\),(9 21&$@{.,1:,1:,}.)(+.1&|."1)|.=|i:10

İfade sağdan sola değerlendirir, böylece:

  • i: 10 -10 ila +10 arasında sayılır
  • | +10'dan 0'a geri dönmek için abs'i geri alın
  • = kendini 0'lı bir blokta 1'lerin V şeklini almak için sınıflandır
  • |. / \ shape almak için ters satır sırası
  • ( +. 1&|."1 ) hook ifadesi her satırı birer birer sağa kaydırır ve OR
  • ( 9 21&$@{. , 1: , 1: , }. ) iç içe forks horizontals koymak ve üst uzatmak
  • , bloğu kümülasyon için doğrusal bir sıraya sokmak
  • ( * +/\ ) kendini topla ve çarp
  • 20 21 $ bir bloğa şekli döndür 21 elemanın 20 satırı
  • 31 + ekle 31, çünkü ilk 1, bir boşluk karakteri kodu 32 olmalıdır
  • 32 >. 32 kat
  • a. {~ ascii'den karakter toplamak

4
PPCG'ye Hoşgeldiniz! Bunu neden rakip olmadığına işaret ettiniz?
Martin Ender

Sadece, yarışmanın başlamasından uzun bir süre sonra [15 ay] olsa bile, çabamı ekleyeceğimi düşündüm .. Her bulmacanın açık kaldığını mı söylüyorsunuz? .. ayrıca J ifadesinin REPL dışına yazdırması için, yani bir komut dosyasında çalıştırıldığında smoutputkomut ya da eşdeğer bir önek gerekir
jayprich

Zorluklar genellikle süresiz olarak açık kalır (bir cevap daha önce kabul edilmiş olsa bile). Bazen yeni girişlere (cevap zincirleme, polisler ve soyguncular, tepenin kralı aklına gelir) yaklaşan bazı özel zorluklar söz konusudur, ancak bunlar genellikle zorluk tanımında bunu söyleyecektir. Bunun geçerli bir cevap formatı olup olmadığına gelince, daha fazla J deneyimi olan birisine sormanız gerekir, ancak REPL cevapları genellikle işaretlendikleri sürece iyidir.
Martin Ender

1

Ruby, 91 bayt

->{(-11..8).map{|i|["%s"*21,"%#{9-i}s%s%#{i*2+1}s%s","%10s%s"][i/2<=>-1]}*$/%[*' '..?~,$/]}

Ungolfed

->{(-11..8).map{|i|            #For each line
  ["%s"*21,                    #If i/2==-1 make a format string of 21 %s
   "%#{9-i}s%s%#{i*2+1}s%s",   #If i/2>-1 make a format string %{9-i}s%s%{i*2+1}s%s
   "%10s%s"][i/2<=>-1]         #If i/2<-1 make a format string %10s%s
  }*$/%                        #Join the format strings with newlines $/ then use sprintf operator %
  [*' '..?~,$/]                #to replace the %s with *' '..'~' and a newline for last corner.
}

1

Ben C # bir cevap özledim bu yüzden ...

C # (.NET Core) , 175 174 bayt

_=>{var r="";for(int i=0,j,d=32,s=1;i<54;i++)for(j=0;j++<"*#4#4#4#4#4#4#4#4#+K)%1###/#%#-#'#+#)#)#+#'#-#%#/###1#"[i]-33;)r+=(char)(i%2<1?32:d++)+(s++%21<1?"\n":"");return r;}

Çevrimiçi deneyin!

  • Kevin Cruijssen sayesinde 1 bayt kurtarıldı!

1
intfor(int i=0,j,d=32,s=1;i<54;i++)for(j=0
S'yi

1

Tcl , 209 bayt

proc I {} {incr ::i}
proc A {} {time {append a [$::F %c [I]]} 21;puts $a}
set i 31
time {puts [[set F format] %10c%c [I] [I]]} 9
A
A
time {puts [$F %[expr 32-[I]/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

Çevrimiçi deneyin!


Tcl , 212 bayt

proc I {} {incr ::i}
proc A {} {time {append a [$::F %c [I]]} 21;puts $a}
set i 31
time {puts [[set F format] %10c%c [I] [I]]} 9
A
A
time {puts [$F %[expr (129-[I])/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

Çevrimiçi deneyin!

tcl, 213

proc I {} {incr ::i}
set F format
proc A {} {time {append a [$::F %c [I]]} 21;puts $a}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
A
A
time {puts [$F %[expr (129-[I])/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

gösteri


tcl, 214

proc I {} {incr ::i}
set F format
proc A {} {time {append a [$::F %c [I]]} 21;puts $a}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
A
A
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

gösteri


tcl, 227

proc I {} {incr ::i}
set F format
proc A {} {time {append ::a [$::F %c [I]]} 21}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
A
set a $a\n
A
puts $a
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

gösteri

tcl, 236

proc I {} {incr ::i}
set F format
proc A {} {time {append ::a [$::F %c [I]]} 21}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
set a ""
A
set a $a\n
A
puts $a
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

gösteri


tcl, 237

proc I {} {incr ::i}
set F format
proc A {} {time {set ::a $::a[$::F %c [I]]} 21}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
set a ""
A
set a $a\n
A
puts $a
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

gösteri


Aynı boyutta alternatif yaklaşım:

proc I {} {incr ::i}
set F format
proc A b {time {upvar $b c;set c $c[$::F %c [I]]} 21}
set i 31
time {puts [$F %10c%c [I] [I]]} 9
set a ""
A a
set a $a\n
A a
puts $a
time {I;puts [$F %[expr (129-$i)/4]c%c $i [I]][$F %[expr $i/2-45]c%c [I] [I]]} 9

gösteri

Tcl, 288

lassign {set while puts format incr expr} S W P F I E
$S i 31
$W \$i<48 {$P [$F %10c%c [$I i] [$I i]]}
$S a ""
$W {[$I i]<71} {$S a $a[$F %c $i]}
$S a $a\n
$W \$i<92 {$S a $a[$F %c $i];$I i}
$P $a
$W \$i<128 {$P [$F %[$E (129-$i)/4]c%c $i [$I i]][$F %[$E $i/2-45]c%c [$I i] [$I i]]; $I i}

gösteri


tcl, 297 bayt (naif girişim)

set i 31
while \$i<48 {puts [format %10c%c [incr i] [incr i]]}
set a ""
while {[incr i]<71} {set a $a[format %c $i]}
set a $a\n
while \$i<92 {set a $a[format %c $i];incr i}
puts $a
while \$i<128 {puts [format %[expr (129-$i)/4]c%c $i [incr i]][format %[expr $i/2-45]c%c [incr i] [incr i]]; incr i}

gösteri


1
"Saf teşebbüs" ile ne demek istiyorsun? Bunun yerine uzunluğu başlığa koymamalı mıydın?

1
Yani daha çok golf oynamak için yer var, çünkü hala çok fazla tekrarlama var. Ve daha çok golf oynarım.
sergiol,

Ham yaklaşım 254 bayt boyutuna sahiptir.
sergiol,


@ Yalnızca ASCII: Teşekkürler. Benim öneriniz, önerinize tam olarak eşit değil! ;)
sergiol

1

Şiirsel , 899 bayt

ill be honest with you
i expect a big solitude
i guess i had a guilt
my own idea being:i was real alone,i was a lonely human
also,i am still
o,i guess i was expecting a shift
i figured,surely i know i am tired of silence
now i dreamed for a shift
a magical desire cant come
i am barely a man,so i guess i see why a woman i see ignores myself
i know i am awful
o,a night of passion and a moment of love
i am truly the foolish person,every time i am saying i may recapture a love
o,i think i can,i think i can
i really do know i am unfit
o,i notice a lot,i think i know i am unfit
o,a novel,or perhaps poetry in code,i do enjoy the writing
and i shudder and i wonder in a moment
i was a weirdo,i was a freak,or like,i am creepy
o,i think i was a misfit
i know i am,really
o,i ought not concern myself
and sure,i am still some joyless man
i focused and i tried
a lasting solace and joy is nearby for me

Çevrimiçi deneyin!

Şiirsel, bir sınıf projesi için 2018 yılında yaptığım bir esolang. Temelde semboller yerine kelime uzunlukları ile beyin fırtınası.

Bu şiir ... iç karartıcı. 😟


0

Python 2.7, 194 188 bayt

k,l,c,s,r=8,0,chr,' ',range;o=''.join(map(chr,r(32,127)))
for i in r(0,18,2):print s*9+o[i:i+2]
print o[18:39]+'\n'+o[39:60]
for i in r(60,95,4):print s*k+o[i:i+2]+s*l+o[i+2:i+4];k-=1;l+=2

Sen değiştirerek 2 bayt bırakabilirsiniz map(chriçin map(colduğu gibi czaten olarak tanımlanmıştırchr

0

Jq 1.5 , 180 bayt

foreach((range(9)|[9,2]),(range(2)|[0,21]),(range(9)|[8-.,2,.+.,2]))as$r({s:[range(32;127)]|implode};.r=$r|.p=""|until(.r==[];.p+=" "*.r[0]+.s[:.r[1]]|.s =.s[.r[1]:]|.r=.r[2:]);.p)

Expanded

foreach (                              # instruction sequence: [indent, count]
    (range(9)|[9,2]),                  # 9 rows of 2 characters indented 9 spaces
    (range(2)|[0,21]),                 # 2 rows of 21 characters
    (range(9)|[8-.,2,.+.,2])           # 9 rows of 4 characters with varying indent
) as $r (
    {s:[range(32;127)]|implode}        # state = ascii string
  ; .r = $r                            # current instruction
  | .p = ""                            # print string for this row
  | until(.r==[];                      # until current instruction is exhausted
        .p += " "*.r[0] + .s[:.r[1]]   # add to print string
      | .s = .s[.r[1]:]                # remove from state
      | .r = .r[2:]                    # remove from instruction
    )
  ; .p                                 # emit print string
 )

Çevrimiçi deneyin!


0

Eğik çizgiler ( /// ), 324 bayt

          !
         "#
         $%
         &'
         ()
         *+
         ,-
         .\/
         01
23456789:;<=>?@ABCDEF
GHIJKLMNOPQRSTUVWXYZ[
        \\]^_
       `a  bc
      de    fg
     hi      jk
    lm        no
   pq          rs
  tu            vw
 xy              z{
|}                ~

Eğik çizgilerdeki ilk (varsayılan) eylem 'yazdır' dır, bu nedenle dize yazdırılır. /Ve \işlem tarafından öncelenmelidir \s.


Bayt sayısını ve tercihen bir tercümana bir link eklemelisiniz. Yine de unungolfed görünüyor (/// içinde daha iyi yapmak daha iyi olup olmadığından emin değilim).
Stewie Griffin

Biraz /// 'in güzelliklerini göstermek şaka gibi, ben de bunları ekleyeceğim!
clabe45

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.