วาด ASCIIrisk


25

มีคำถามมากมายที่เกี่ยวข้องกับรูปร่างการวาดโดยใช้เครื่องหมายดอกจัน - ดังนั้นฉันจึงคิดว่าถ้ามีเครื่องหมายดอกจันจำนวนมากอยู่ที่นั่นเราควรวาดมันโดยใช้ตาราง ASCII

ท้าทาย

งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่ไม่มีการป้อนข้อมูลและส่งออกข้อความที่แน่นอนนี้:

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

สำหรับการอ้างอิงไซต์นี้แสดงรายการตาราง ASCII ที่สมบูรณ์

กฎระเบียบ

  • ผลลัพธ์ควรเป็นข้อความตรงตามที่แสดงด้านบน อนุญาตช่องว่างนำหน้า / ต่อท้าย
  • มีช่องโหว่ของการเล่นกอล์ฟแบบมาตรฐาน - ไม่ต้องอ่าน ASCIIrisk นี้จากอินเทอร์เน็ต ฯลฯ
  • นี่คือดังนั้นการแก้ปัญหาที่สั้นที่สุด (เป็นไบต์) ชนะ

2
ผมอยากจะลองท้าทายนี้ ... แต่มันฟังดูครับมีความเสี่ยง โปรดแก้ตัวเรื่องตลกของฉันด้วย
HyperNeutrino

1
Stack Overflow มีนโยบาย NoBadJokes ดังนั้นฉันจะต้องเพิกเฉยต่อความคิดเห็นนั้น ขออภัย แต่นโยบาย

2
ถูก ขออภัยที่ละเมิดนโยบาย ขอบคุณที่เพิกเฉยความคิดเห็นของฉันโดยตอบกลับ
HyperNeutrino

คำตอบ:


5

05AB1E , 40 38 37 36 35 ไบต์

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

ลองออนไลน์!

คำอธิบาย

ž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 แต่ฉันคิดว่าคุณสามารถโกนบางอย่างกับ ZIP
Magic Octopus Urn

@carusocomputing: ฉันไม่คิดว่า zip มีประโยชน์มากที่นี่เพราะเราต้องการให้ตัวละครยังคงเรียงตามลำดับ การแยกทุกอย่างเป็นคู่ในตอนแรกเป็นความคิดที่ดี มันรู้สึกสิ้นเปลืองโดยใช้rและs มากมายแต่ฉันไม่เห็นทางรอบ ๆ
Emigna

13

Python 3 , 110 ไบต์

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),))

สร้างเทมเพลต

         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

ด้วย%cfor x, จากนั้นใช้การแก้ไขสตริงrange(32,128)เพื่อแทรกค่า ASCII ลงในรูปแบบ

ลองออนไลน์!

งูหลาม 2 เป็นหนึ่งไบต์อีกต่อไปกับการเปิดออกอีกต่อไป tuple 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))

มันสมควรได้รับรางวัลความคล้ายคลึงกันของหอไอเฟล!
sergiol

11

V , 54 , 50 ไบต์

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

ลองออนไลน์!

โปรแกรมนี้ไม่มีอักขระที่ไม่สามารถพิมพ์ได้

คำอธิบาย:

¬ ~                     " 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

ตอนนี้บัฟเฟอร์มีลักษณะดังนี้:

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

ตอนนี้เราสร้างตรงกลาง:

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

นี่คือสิ่งที่มันแปลก ๆ

$                       " 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

นี่คือบันทึกย่อที่สำคัญ >คำสั่งเป็นจริงผู้ประกอบการซึ่งหมายความว่ามันไม่ได้ทำอะไรโดยไม่โต้แย้งข้อความที่จะดำเนินการเกี่ยวกับ ตัวอย่างเช่น,

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

แต่เนื่องจากคำสั่งนี้อยู่ในลูปเราสามารถบันทึกอักขระโดยไม่ให้โอเปอเรเตอร์ ในตอนท้ายของลูปถ้าโอเปอเรเตอร์ใดที่ค้างอยู่มันจะกรอก_(บรรทัดปัจจุบัน) เป็นอาร์กิวเมนต์โดยปริยาย

ตอนนี้ฉันจะยอมรับว่าลูปนี้แปลกเล็กน้อยและมันอาจเป็นเรื่องยากที่จะติดตามว่าข้อความทั้งหมดควรมีลักษณะอย่างไรในเวลาใดก็ตาม ดังนั้นคุณสามารถใช้โปรแกรมที่ง่ายกว่านี้เพื่อดูว่ามันจะมีลักษณะเป็นอย่างไรหลังจากวนรอบN

หากคุณตั้งค่าเป็น 9 คุณจะเห็นว่าเรามีข้อความเพิ่มเติมเล็กน้อยที่จะกำจัด (แค่บรรทัดปัจจุบัน)

ddดังนั้นเราจึงลบบรรทัดปัจจุบันด้วย แต่เดี๋ยวก่อน! คุณรู้วิธีที่ฉันพูดว่าผู้ประกอบการจะต้องโต้แย้งซึ่งบางครั้งก็กรอกโดยปริยาย? อาร์กิวเมนต์จะถูกเติมโดยปริยายในตอนท้ายของโปรแกรม ดังนั้นแทนที่จะddหรือd_(ซึ่งเทียบเท่า) เราก็สามารถที่จะdและปล่อยให้ V กรอกข้อมูลใน_สำหรับเรา


เป็นงานที่ดีเหยียดหยามÿ:)
Kritixi Lithos


5

JavaScript (ES6), 156115 114 ไบต์

น่าเสียดายที่ราคาที่น่าอับอายString.fromCharCode()19 ไบต์

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())

จัดรูปแบบและแสดงความคิดเห็น

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 ไบต์
ETHproductions

@ ETHproductions ฉันชอบความคิดในการโทรString.fromCharCode()หาอาร์เรย์ แต่ฉันไปหาวิธีอื่น ขอขอบคุณ!
Arnauld

3

QBIC , 153 151 ไบต์

[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

มันเป็นแค่ชุดของ FOR-ลูปและหล่อ int ถึงตัวละคร ( chr$())

ตัวอย่างผลลัพธ์:

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


3

PHP, 110 105 103 93 91 ไบต์

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

พิมพ์บรรทัดใหม่นำ ทำงานด้วย-nrหรือทดสอบออนไลน์

หลักการพื้นฐานถูกนำมาใช้จาก Arnauld แต่มันซ้ำ
และจะใช้ประโยชน์ที่ดีจาก PHP's typecasts นัย:
โมฆะไป int สำหรับดัชนีสตริงลอยไป int สำหรับ%บูลีนเพื่อ int สำหรับและ&+=

คำอธิบายด้วยรหัสเทียม

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 ไบต์

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

โปรแกรมที่พิมพ์ผลลัพธ์

ลองออนไลน์!

มันทำงานอย่างไร

srdC127 สร้างรายการของอักขระ ASCII ที่พิมพ์ได้และเชื่อมสิ่งนี้เข้ากับสตริง

c....,18 60แยกสตริงนี้ที่ดัชนี18และ60ให้รายการของสามสายที่สอดคล้องกับส่วนต่าง ๆ ของเอาท์พุท: ด้านบนกลางและด้านล่าง

.eเริ่มต้นแผนที่แจกแจงมากกว่าสตริงกับสตริงเป็นและดัชนีของพวกเขาเป็นbk

[...)สร้างรายการที่มีการกระทำที่ต้องการสำหรับแต่ละส่วนของแผนภาพ @...kการกระทำที่ถูกต้องถูกเลือกโดยการจัดทำดัชนีในรายการที่มีดัชนีปัจจุบันใช้

  • ด้านบน

    cb2แยกสตริงเป็นคู่ของตัวละครและ+L*9;prepends 9ช่องว่างแต่ละคู่

  • กลาง

    c2b แยกสตริงออกเป็นสองสายยาวเท่ากัน

  • ด้านล่าง

    cL2cb4 แยกสตริงออกเป็นกลุ่มที่มีสี่อักขระและแต่ละกลุ่มเป็นคู่

    .eเริ่มต้นแผนที่แจกแจงกับคู่สตริงและดัชนีของพวกเขาเป็นZY

    j*yYdZร่วมคู่ใน2*Yช่องว่างและ+*-8Ydprepends 8-Yพื้นที่

jsผสานผลลัพธ์ทั้งหมดและรวมรายการผลลัพธ์ในการขึ้นบรรทัดใหม่ สิ่งนี้จะถูกพิมพ์โดยปริยาย


2

Haskell , 144 ไบต์

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]])#[' '..]

ลองออนไลน์!

คำอธิบาย:

b!n=[1..n]>>bกำหนดฟังก์ชั่น!ที่ซ้ำรายการหรือสตริงb nเวลา

unlines([" "!9++p]!9++["*"!21]!2++[" "!(8-n)++p++" "!(2*n)++p|n<-[0..8]]) ใช้ฟังก์ชันนี้เพื่อวาดเครื่องหมายดอกจันของเครื่องหมายดอกจัน (Oh, irony!):

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

#ถูกกำหนดให้เป็นฟังก์ชั่นที่จะแทนที่อย่างต่อเนื่อง*ในสตริงที่มีตัวอักษรจากรายการที่กำหนด มันเรียกว่ามีเครื่องหมายดอกจันข้างต้นของดอกจันและซึ่งเป็นรายการที่ไม่มีที่สิ้นสุดของทุกตัวละครที่เริ่มต้นด้วยพื้นที่[' '..]' '


ซูเปอร์ปลายไปงานเลี้ยงที่นี่ แต่ที่สามารถ" "!(2*n) "(TWO SPACES)"!n
ลินน์


2

J, 63

(ไม่แข่งขัน)

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

นิพจน์ประเมินค่าจากขวาไปซ้ายดังนี้:

  • i: 10 นับจาก -10 ถึง +10
  • | ใช้ abs เพื่อรับ +10 ถึง 0 กลับไปที่ +10
  • = จัดประเภทด้วยตนเองเพื่อให้ได้รูป V ของ 1 ในบล็อกของ 0
  • |. กลับคำสั่งแถวเพื่อรับ / \ รูปร่าง
  • ( +. 1&|."1 ) นิพจน์ hook เลื่อนแต่ละแถวไปทางขวาทีละหนึ่งและ OR ด้วยต้นฉบับ
  • ( 9 21&$@{. , 1: , 1: , }. ) ส้อมซ้อนกันเพื่อวางในแนวนอนและยืดด้านบน
  • , เพื่อทำลายบล็อกเป็นลำดับเชิงเส้นสำหรับการสะสม
  • ( * +/\ ) สะสมและทวีคูณด้วยตัวเอง
  • 20 21 $ เปลี่ยนรูปร่างกลับเป็นบล็อก 20 แถวจาก 21 องค์ประกอบ
  • 31 + เพิ่ม 31 เพราะ 1 อันดับแรกควรเป็นรหัสพื้นที่ 32
  • 32 >. ชั้นที่ 32
  • a. {~ เลือกตัวอักษรจาก ascii ในตัว

4
ยินดีต้อนรับสู่ PPCG! ทำไมคุณถึงทำเครื่องหมายว่าไม่ได้แข่งขัน?
Martin Ender

ฉันแค่คิดว่าฉันจะเพิ่มความพยายามของฉันแม้ว่ามันจะเป็นเวลานาน [15mths] หลังจากการแข่งขันเริ่มขึ้น .. คุณบอกว่าปริศนาแต่ละอันยังเปิดอยู่? .. และสำหรับนิพจน์ J ที่จะพิมพ์นอก REPL เช่นเมื่อเรียกใช้งานในสคริปต์ฉันต้องsmoutputสั่งคำนำหน้าหรือเทียบเท่า
jayprich

โดยทั่วไปความท้าทายจะยังคงเปิดกว้างอยู่เรื่อย ๆ มีความท้าทายพิเศษบางประเภทที่บางครั้งก็ใกล้เคียงกับรายการใหม่ (คำตอบการผูกมัดตำรวจและโจรราชาแห่งความคิดอยู่ในใจ) แต่สิ่งเหล่านี้มักจะพูดถึงในคำอธิบายการท้าทาย สำหรับรูปแบบนี้เป็นคำตอบที่ถูกต้องหรือไม่คุณจะต้องถามคนที่มีประสบการณ์ J มากกว่านี้ แต่คำตอบ REPL นั้นใช้ได้ปกติตราบใดที่พวกเขาถูกทำเครื่องหมายเช่นนั้น
Martin Ender

1

Ruby, 91 ไบต์

->{(-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

ฉันพลาดคำตอบใน C # ดังนั้น ...

C # (. NET Core) , 175 174 ไบต์

_=>{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;}

ลองออนไลน์!

  • บันทึก 1 ไบต์ขอบคุณ Kevin Cruijssen!

1
คุณสามารถบันทึก byte โดยใส่ints ไว้ใน for-loop:for(int i=0,j,d=32,s=1;i<54;i++)for(j=0
Kevin Cruijssen

1

Tcl , 209 ไบต์

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

ลองออนไลน์!


Tcl , 212 ไบต์

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

ลองออนไลน์!

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

การสาธิต


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

การสาธิต


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

การสาธิต

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

การสาธิต


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

การสาธิต


ทางเลือกวิธีการที่มีขนาดเท่ากัน:

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

การสาธิต

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}

การสาธิต


tcl, 297 ไบต์ (ไม่พยายาม)

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}

การสาธิต


1
"naïveพยายาม" คุณหมายถึงอะไร? คุณไม่ควรใส่ความยาวในชื่อแทนหรือไม่

1
ฉันหมายถึงมีพื้นที่สำหรับการเล่นกอล์ฟมากขึ้นเพราะยังมีการทำซ้ำมาก และฉันจะตีกอล์ฟให้มากกว่านี้
sergiol

วิธีดิบมีขอบเขต 254 ไบต์
sergiol


@ ASCII เท่านั้น: ขอบคุณ ฉันไม่เท่ากับคำแนะนำของคุณ! ;)
sergiol

1

บทกวี 899 ไบต์

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

ลองออนไลน์!

บทกวีเป็น esolang ฉันทำในปี 2018 สำหรับโครงการในชั้นเรียน โดยพื้นฐานแล้วมันเป็นความคิดที่มีความยาวของคำแทนที่จะเป็นสัญลักษณ์

บทกวีนี้ ... ตกต่ำ 😟


0

Python 2.7, 194 188 ไบต์

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

คุณสามารถวาง 2 ไบต์โดยการเปลี่ยนmap(chrไปmap(cเป็นcได้รับการกำหนดให้เป็นchr

0

Jq 1.5 , 180 ไบต์

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)

ขยาย

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
 )

ลองออนไลน์!


0

สแลช ( /// ), 324 ไบต์

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

การกระทำแรก (ค่าเริ่มต้น) ใน Slashes คือ 'print' ดังนั้นสตริงจะถูกพิมพ์ /และ\จะต้องหลบหนีจากการดำเนินการ\ของ


คุณควรเพิ่มจำนวนไบต์และควรลิงค์ไปยังล่าม ดูเหมือนว่าจะค่อนข้างไม่ดีนัก (ไม่แน่ใจว่าควรทำอะไรใน ///) ดีกว่า
Stewie Griffin

เป็นเรื่องตลกที่แสดงความงามของ /// และฉันจะเพิ่มสิ่งเหล่านั้น!
clabe45

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.