Vẽ một ASCIIrisk


25

Có rất nhiều câu hỏi liên quan đến việc vẽ hình bằng cách sử dụng dấu hoa thị - vì vậy tôi nghĩ, với rất nhiều dấu sao ngoài đó, chúng ta nên vẽ một hình, sử dụng bảng ASCII.

Thử thách

Nhiệm vụ của bạn là viết một chương trình hoặc chức năng không có đầu vào và xuất văn bản chính xác này:

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

Để tham khảo, trang web này liệt kê bảng ASCII hoàn chỉnh.

Quy tắc

  • Đầu ra phải là văn bản chính xác, như được hiển thị ở trên. Khoảng trắng hàng đầu / dấu được cho phép.
  • Áp dụng sơ hở golf tiêu chuẩn - không đọc ASCIIrisk này từ internet, v.v.
  • Đây là , vì vậy giải pháp ngắn nhất (tính bằng byte) sẽ thắng.

2
Tôi muốn thử thách này ... nhưng nghe có vẻ mạo hiểm . Xin thứ lỗi cho sự hài hước khủng khiếp của tôi.
HyperNeutrino

1
Stack Overflow có chính sách NoBadJokes nên tôi sẽ phải bỏ qua nhận xét đó. Xin lỗi nhưng chính sách

2
Đuợc. Xin lỗi vì đã vi phạm chính sách. Cảm ơn bạn đã bỏ qua bình luận của tôi bằng cách trả lời nó.
HyperNeutrino

Câu trả lời:


5

05AB1E , 40 38 37 36 35 byte

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

Hãy thử trực tuyến!

Giải trình

ž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», Tôi có 39, nhưng tôi nghĩ bạn có thể tắt một số với ZIP.
Bạch tuộc ma thuật Urn

@carusocomputing: Tôi không nghĩ zip rất hữu ích ở đây vì chúng tôi muốn các nhân vật duy trì tuần tự. Chia tất cả mọi thứ theo cặp khi bắt đầu là một ý tưởng tốt. Tôi cảm thấy lãng phí khi sử dụng quá nhiều rs nhưng tôi không thấy cách nào khác.
Emigna

13

Python 3 , 110 byte

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

Tạo mẫu

         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

với %cfor x, sau đó sử dụng phép nội suy chuỗi trên range(32,128)để chèn các giá trị ASCII vào mẫu.

Hãy thử trực tuyến!

Python 2 dài hơn một byte, với bộ giải nén dài hơn nhưng ngắn hơn 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))

Nó xứng đáng với một giải thưởng tương tự Tháp Eiffel!
sergiol

11

V , 54 , 50 byte

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

Hãy thử trực tuyến!

Không giống như thông thường, chương trình này không chứa bất kỳ ký tự không thể in được.

Giải trình:

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

Bây giờ bộ đệm trông như thế này:

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

Bây giờ chúng tôi xây dựng ở giữa:

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

Đây là nơi nó có một chút kỳ lạ.

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

Đây là một lưu ý quan trọng. Các >lệnh thực sự là một nhà điều hành , có nghĩa là nó không làm bất cứ điều gì mà không cần một cuộc tranh cãi, các văn bản hoạt động trên. Ví dụ,

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

Nhưng vì lệnh này nằm trong một vòng lặp, chúng ta có thể lưu một ký tự bằng cách không đưa ra một toán tử. Ở cuối vòng lặp, nếu bất kỳ toán tử nào đang chờ xử lý, nó sẽ điền vào _(dòng hiện tại) dưới dạng một đối số ngầm.

Bây giờ tôi sẽ thừa nhận vòng lặp này hơi kỳ lạ và thật khó để theo dõi tất cả các văn bản sẽ trông như thế nào tại bất kỳ thời điểm nào. Vì vậy, bạn có thể sử dụng chương trình đơn giản này để xem nó sẽ trông như thế nào sau N vòng lặp.

Nếu bạn đặt nó thành 9, bạn có thể thấy rằng chúng tôi có một chút văn bản bổ sung để loại bỏ. (Chỉ là dòng hiện tại).

Vì vậy, chúng tôi xóa dòng hiện tại với dd. Nhưng chờ đã! Bạn có biết làm thế nào tôi nói rằng các nhà khai thác phải đưa ra một đối số mà đôi khi được ngầm định điền vào? Các đối số cũng được ngầm điền vào cuối chương trình. Vì vậy, thay vì ddhoặc d_(tương đương), chúng ta có thể chỉ cần dvà để V điền vào _cho chúng ta.


Rất vui khi lạm dụng những điều ngầm ÿ:)
Kritixi Lithos

5

Python 3 170 165 155 147 byte

Tôi đã chơi golf này rất nhiều, tôi đã quên cách nó hoạt động ...

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

Hãy thử trực tuyến!


5

JavaScript (ES6), 156 ... 115 114 byte

Đáng buồn thay, khét tiếng có String.fromCharCode()giá 19 byte.

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

Định dạng và nhận xét

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

Tôi nghĩ bạn có thể làm String.fromCharCode(...[...Array(n)].map(_=>k++))để tiết kiệm 4 byte.
Sản phẩm ETH

@ETHproductions Tôi thích ý tưởng gọi String.fromCharCode()một mảng, nhưng tôi đã đi theo một cách tiếp cận khác. Dù sao cũng cảm ơn bạn!
Arnauld

3

QBIC , 153 151 byte

[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

Nó thực sự chỉ là một chuỗi các vòng lặp FOR và truyền int cho một nhân vật ( chr$()).

Đầu ra mẫu:

          !
         "#
         $%
         &'
         ()
         *+
         ,-
         ./
         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 byte

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

in một dòng mới hàng đầu. Chạy với -nrhoặc kiểm tra nó trực tuyến .

Nguyên tắc cơ bản được thông qua từ Arnauld, nhưng điều này lặp đi lặp lại.
Và nó tận dụng lợi thế từ các kiểu chữ ẩn của PHP:
NULL để int cho chỉ mục chuỗi, float sang int for %, boolean đến int for &và for +=.

giải thích với mã giả

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

Bình thường , 53 byte

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

Một chương trình in kết quả.

Hãy thử trực tuyến!

Làm thế nào nó hoạt động

srdC127 tạo một danh sách các ký tự ASCII có thể in và ghép chuỗi này thành một chuỗi.

c....,18 60chia chuỗi này tại các chỉ số 1860, đưa ra danh sách ba chuỗi tương ứng với các phần khác nhau của đầu ra: trên cùng, giữa và dưới cùng.

.ebắt đầu một bản đồ liệt kê trên các chuỗi với các chuỗi như bvà các chỉ số của chúng là k.

[...)tạo một danh sách chứa hành động mong muốn cho từng phần của sơ đồ. Hành động chính xác được chọn bằng cách lập chỉ mục vào danh sách với chỉ mục hiện tại, sử dụng @...k.

  • Hàng đầu

    cb2chia tách chuỗi thành các cặp ký tự, và +L*9;prepends 9không gian để mỗi cặp.

  • Ở giữa

    c2b chia chuỗi thành hai chuỗi có độ dài bằng nhau.

  • Dưới cùng

    cL2cb4 chia chuỗi thành các nhóm gồm bốn ký tự và mỗi nhóm thành các cặp.

    .ebắt đầu một bản đồ liệt kê, với các cặp chuỗi như Zvà các chỉ số của chúng là Y.

    j*yYdZtham gia các cặp trên 2*Ykhông gian, và +*-8Ydprepends 8-Ykhông gian.

jshợp nhất tất cả các kết quả và tham gia danh sách kết quả trên dòng mới. Điều này sau đó được in ngầm.


2

Haskell , 144 byte

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

Hãy thử trực tuyến!

Giải trình:

b!n=[1..n]>>bđịnh nghĩa một hàm !lặp lại danh sách hoặc chuỗib n -times.

unlines([" "!9++p]!9++["*"!21]!2++[" "!(8-n)++p++" "!(2*n)++p|n<-[0..8]]) sử dụng chức năng này để vẽ dấu hoa thị (Ôi, thật trớ trêu!):

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

#được định nghĩa là một hàm thay thế liên tiếp *trong một chuỗi bằng các ký tự từ một danh sách nhất định. Nó được gọi với dấu hoa thị ở trên và [' '..]đó là một danh sách vô tận của tất cả các ký tự bắt đầu bằng khoảng trắng ' '.


Siêu muộn đến bữa tiệc ở đây, nhưng điều đó " "!(2*n)có thể "(TWO SPACES)"!n.
Lynn

2

Than , 39 byte (không biên dịch)

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

Hãy thử trực tuyến! AST cung cấp để giải thích, χlà biến preinitialized cho 10.


2

J, 63

(không thi đấu)

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

biểu thức đánh giá từ phải sang trái do đó:

  • i: 10 đếm từ -10 đến +10
  • | mất abs để có được +10 về 0 trở về +10
  • = tự phân loại để có được hình chữ V là 1 trong một khối 0
  • |. thứ tự hàng ngược để có được / \ hình
  • ( +. 1&|."1 ) biểu thức hook dịch chuyển từng hàng ngay bên phải và OR với bản gốc
  • ( 9 21&$@{. , 1: , 1: , }. ) dĩa lồng nhau để đặt theo chiều ngang và kéo dài trên cùng
  • , phá vỡ khối thành một chuỗi tuyến tính để tích lũy
  • ( * +/\ ) tích lũy và nhân lên với bản thân
  • 20 21 $ hoàn nguyên hình dạng thành một khối 20 hàng gồm 21 phần tử
  • 31 + thêm 31 vì 1 đầu tiên phải là mã char không gian 32
  • 32 >. tầng 32
  • a. {~ chọn ký tự từ ascii tích hợp

4
Chào mừng đến với PPCG! Làm thế nào mà bạn đánh dấu điều này là không cạnh tranh?
Martin Ender

Tôi chỉ nghĩ rằng tôi sẽ thêm nỗ lực của mình mặc dù đã rất lâu [15mth] sau khi cuộc thi được phát động .. bạn có nói rằng mỗi câu đố vẫn mở không? .. cũng để biểu thức J in bên ngoài REPL, tức là khi được thực thi trong tập lệnh tôi cần phải có tiền tố smoutputhoặc tương đương
jayprich

Các thách thức thường mở vô thời hạn (ngay cả khi câu trả lời đã được chấp nhận). Có một số loại thử thách đặc biệt đôi khi bị đóng vào các mục mới (câu trả lời, cảnh sát và tên cướp, vua đồi núi đến với tâm trí), nhưng những điều đó thường sẽ nói như vậy trong mô tả thử thách. Về việc đây có phải là định dạng câu trả lời hợp lệ hay không, bạn phải hỏi ai đó có nhiều kinh nghiệm J hơn, nhưng câu trả lời REPL thường tốt miễn là chúng được đánh dấu như vậy.
Martin Ender

1

Ruby, 91 byte

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

Bị đánh cắp

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

Tôi đã bỏ lỡ một câu trả lời trong C # vì vậy ...

C # (.NET Core) , 175 174 byte

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

Hãy thử trực tuyến!

  • Lưu 1 byte nhờ Kevin Cruijssen!

1
Bạn có thể lưu một byte bằng cách đặt ints bên trong vòng lặp for:for(int i=0,j,d=32,s=1;i<54;i++)for(j=0
Kevin Cruijssen

1

Tcl , 209 byte

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

Hãy thử trực tuyến!


Tcl , 212 byte

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

Hãy thử trực tuyến!

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

bản giới thiệu


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

bản giới thiệu


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

bản giới thiệu

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

bản giới thiệu


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

bản giới thiệu


Phương pháp thay thế với cùng kích thước:

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

bản giới thiệu

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}

bản giới thiệu


tcl, 297 byte (nỗ lực ngây thơ)

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}

bản giới thiệu


1
Bạn có ý nghĩa gì bởi "nỗ lực ngây thơ"? Bạn không nên đặt độ dài trong tiêu đề thay thế?

1
Tôi có nghĩa là có không gian để chơi golf nhiều hơn, bởi vì vẫn còn nhiều sự lặp lại. Và tôi sẽ chơi nó nhiều hơn.
sergiol

Cách tiếp cận thô có phạm vi 254 byte.
sergiol


@ Chỉ ASCII: Cảm ơn. Của tôi không chính xác bằng đề nghị của bạn! ;)
sergiol

1

Thơ mộng , 899 byte

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

Hãy thử trực tuyến!

Thơ là một esolang tôi đã thực hiện vào năm 2018 cho một dự án đẳng cấp. Về cơ bản, nó cân não với độ dài từ thay vì ký hiệu.

Bài thơ này thật ... buồn. 😟


0

Python 2.7, 194 188 byte

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

Bạn có thể giảm 2 byte bằng cách thay đổi map(chrthành map(cnhư cđã được xác định làchr

0

Jq 1.5 , 180 byte

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)

Mở rộng

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
 )

Hãy thử trực tuyến!


0

Dấu gạch chéo ( /// ), 324 byte

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

Hành động (mặc định) đầu tiên trong Dấu gạch chéo là 'in', do đó chuỗi được in. Các /\phải được thoát ra bằng cách tố tụng \s.


Bạn nên thêm số byte và tốt nhất là một liên kết đến một trình thông dịch. Mặc dù nó trông khá vô dụng (không chắc có nên làm tốt hơn trong ///) hay không.
Stewie Griffin

Đó là một trò đùa để thể hiện những vẻ đẹp của ///, và tôi sẽ thêm vào đó!
clabe45

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.