Jack nhảy Asciimation


28

Đây là thử thách đầu tiên của tôi, vì vậy tôi giữ nó khá đơn giản.

Nếu bạn đã từng gõ telnet towel.blinkenlights.nlvào dòng lệnh của mình và nhấn enter, bạn sẽ trải nghiệm niềm vui của sự xác nhận. Asciimation là, khá đơn giản, thực hiện một hoạt hình với nghệ thuật ascii. Hôm nay chúng ta sẽ thực hiện một đánh giá rất cơ bản về một người thực hiện các bước nhảy.

Sẽ có hai hình ảnh ascii mà chúng ta sẽ ghép lại thành một asciimation. Số 1:

_o_
 0
/ \

Số 2:

\o/
_0_
<blank line>

Lưu ý rằng cái thứ hai có một dòng trống ở cuối.

Vì vậy, chương trình của bạn nên làm những bước sau:

  1. Xóa màn hình giao diện điều khiển.
  2. In hình ảnh nghệ thuật ascii chính xác.
  3. Đặt cờ hoặc một cái gì đó để bạn biết làm hình ảnh khác vào lần tới.
  4. Đợi một lát (khoảng một giây).
  5. Tiếp tục tại 1.

Quy tắc

  • Chương trình của bạn phải là một vòng lặp vô hạn (về mặt lý thuyết).
  • Ngôn ngữ lập trình bạn sử dụng phải được tạo trước khi bài đăng này được đăng.
  • Đây là , vì vậy mã ngắn nhất tính bằng byte thắng.
  • Tiêu chuẩn áp dụng.

Thưởng thức!


Có thể có một số khoảng trắng trên <dòng trống> không?
Jakube

1
Điều này có phải độc lập với nền tảng không vì lệnh xóa Linux ( clear) khác với Windows one ( cls)
Beta Decay

1
Là dòng trống chỉ để giải thích định vị? Nếu in từ trên cùng của màn hình sao cho dòng trống không tạo ra sự khác biệt rõ ràng, nó có thể bị bỏ qua không?
trichoplax

@Jakube vâng, có thể có không gian.
bitnbites

1
@trichoplax có. Dòng trống chỉ để chỉ ra rằng đầu phải ở cùng một vị trí.
bitnbites

Câu trả lời:


29

CJam, 51 45 42 38 36 byte

"c\o/
_0_""^[c_o_
 0
/ \^["{_o\6e4m!}g

Trên đây sử dụng ký hiệu caret; chuỗi ^[thực sự là ký tự ASCII với mã điểm 27.

Tôi đã mượn chuỗi thoát ( ^[c) từ câu trả lời của @DomHastings ( với sự cho phép của anh ấy ) để lưu 4 byte.

xác minh

Bạn có thể tạo lại tập tin như thế này:

base64 -d > jj.cjam <<< ImNcby8KXzBfIiIbY19vXwogMAovIFwbIntfb1w2ZTRtIX1n

Để chạy mã, tải xuống trình thông dịch CJam và thực hiện điều này:

java -jar cjam-0.6.5.jar jj.cjam

Điều này sẽ hoạt động trên bất kỳ thiết bị đầu cuối nào hỗ trợ console_codes hoặc một tập hợp con thích hợp. 1

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

e# Push both jumping jacks on the stack.

"c\o/
_0_"

"^[c_o_
 0
/ \^["

e# When chained together, they contain two occurrences of the string "\ec",
e# which resets the terminal. Encoding the ESC byte in the second string
e# eliminates the need two escape a backslash before the string terminator.

{         e# Do:
  _o      e#   Copy the jumping jack on top of the stack and print the copy.
  \       e#   Swap the order of the jumping jacks.
  6e4m!   e#   Calculate the factorial of 60,000 and discard the result.
          e#   This takes "about a second".
}g        e# Since the discarded factorial was non-zero, repeat the loop.

1 Giắc cắm nhảy sẽ trông tốt hơn nếu bạn ẩn con trỏ của thiết bị đầu cuối trước khi chạy chương trình. Trong Konsole, ví dụ: bạn có thể đặt màu của con trỏ khớp với màu nền. Điều này phải được thực hiện thông qua cài đặt của thiết bị đầu cuối của bạn, vì ^[cđặt lại thiết bị đầu cuối.


36
+1 chỉ dành cho Calculate the factorial of 60,000 and discard the result. This takes "about a second".;)
Sản phẩm điện tử

Có lẽ 2Fm*là một thay thế ngắn hơn một byte tốt 6e4m!cho "hoạt động vô nghĩa trả về giá trị trung thực và mất khoảng một giây để tính toán".
Lynn

@Mauris Tôi đã thử một cái gì đó tương tự e!, nhưng chúng dường như được ghi nhớ. Sau lần lặp đầu tiên, Jack tội nghiệp bị đau tim ...
Dennis

10

Pyth - 41 40 39 byte

.VZ"\x1b[H\x1b[J"@c"_o_
 0
/ \\\o/
_0_"Tb .p9

(Tôi đang tính \x1blà một byte vì SO phá hủy các ký tự đặc biệt).

Rõ ràng không hoạt động trực tuyến vì a) một vòng lặp vô hạn và b) sử dụng mã thoát thiết bị đầu cuối.

#                Infinite loop
 "..."           Print escape sequences to clear screen
 @               Modular indexing
  c     T        Chop at index ten into the constituent frames
   "..."         Frames 1 & 2 concatenated (Pyth allows literal newlines in strings)
  ~              Post assign. This is an assign that returns the old value.
   h             Increment function. Putting it after an assign makes it augmented assign.
   Z             Variable auto-initialized to zero.
 .p9             Permutations(range(9), 9). Takes about a second on my machine.

Tôi đã rất ngạc nhiên khi phát hiện ra rằng bài tập tăng cường làm việc với bài tập sau. Pyth là tuyệt vời.


sử dụng .V0như vòng lặp vô hạn
Jakube

Bây giờ bạn có thể lưu một byte vì OP đã xác nhận rằng dòng trống không cần phải được in rõ ràng
trichoplax

@Jakube dường như không tiết kiệm được gì.
Maltysen

Bạn giải thích không tương ứng với mã của bạn: P
Beta Decay

9

QBasic, 58 byte

Đã thử nghiệm trên QB64 .

CLS
?"_o_"
?0
?"/ \"
SLEEP 1
CLS
?"\o/"
?"_0_"
SLEEP 1
RUN

Ngôn ngữ phù hợp cho vấn đề có thể cạnh tranh đáng ngạc nhiên, ngay cả khi nó thường dài dòng. Các ?phím tắt để PRINTgiúp quá, tất nhiên. CLScl tai s creen; RUNkhông có đối số khởi động lại chương trình, đó là cách ngắn nhất để có được một vòng lặp vô hạn.

Thủ thuật duy nhất khác ở đây là in 0cho phần giữa của bức ảnh đầu tiên. QBasic đặt một khoảng trắng ở phía trước (và sau) các giá trị số không âm khi nó in chúng, dẫn đến 0 . Đã lưu 3 ký tự " 0".

Tôi cũng có thể chỉ ra rằng độ trễ trong mã này thực sự là một giây và không phụ thuộc vào máy. ; ^ P


2
Tôi nhớ đã bị làm phiền bởi các không gian xung quanh khi in số trong các phiên bản BASIC khác nhau. Rất vui khi thấy có một công dụng tốt cho nó ...
trichoplax

7

Perl (* nix) , 54 byte

sleep print"\x1bc",$-++%2?'\o/
_0_
':'_o_
 0
/ \
'while 1

( \x1bđược tính là 1 byte nhưng đã thoát để kiểm tra dễ dàng hơn.) Phần trên đã được kiểm tra bằng Bash và rút ngắn bằng một byte khác nhờ @Dennis !

Perl (Windows) , 56 byte

sleep print"\x1b[2J",$-++%2?'\o/
_0_
':'_o_
 0
/ \
'while 1

Cảm ơn @Jarmex đã thử nghiệm và tư vấn!


2
Sợ điều đó không hoạt động trên Windows, nhưng bạn chỉ có thể lấy thêm 1 byte bằng : print"@[2J", thay thế dấu ngoặc kép trong dấu ngoặc kép bằng ASCII 27 (cho mục đích thử nghiệm, print"\033[2J"có thể dễ dàng hơn).
Jarmex

Bạn có thể thay thế \ebằng một byte ESC bằng chữ. - Bạn có phiền nếu tôi sử dụng \ecmánh khóe trong câu trả lời của mình không?
Dennis

@Dennis tất nhiên, vì "\e"dù sao cũng chỉ là một lối tắt cho điều đó. Xin hãy tiếp tục!
Dom Hastings

6

Javascript (ES6), 109 93 79 70 byte + HTML, 12 10 byte = 120 106 91 80 byte

Khá đơn giản. Sử dụng các chuỗi mẫu để lưu trữ hình ảnh và bật một giá trị boolean để xác định sử dụng cái nào.

LƯU Ý: Giải pháp này có thể không hợp lệ, vì nó không thực sự sử dụng bàn điều khiển. Tuy nhiên, tôi không tin rằng có thể xóa bảng điều khiển trình duyệt bằng JS, ít nhất là trong khi sử dụng Firefox.

a=!1,setInterval(_=>O.innerHTML=(a=!a)?`_o_ 
 0
/ \\`:`\\o/ 
_0_`,1e3)
<pre id=O>


1
@orlp Code tạo ra người đàn ông hoạt hình. (Chrome @ Windows). Đây là GUI dựa trên chứ không phải dựa trên giao diện điều khiển. Có thể không được coi là hợp lệ như vậy.
Justin

3
1. Trên máy tính của tôi, tính năng này hoạt động tốt trong Firefox nhưng không hoạt động trong Chrome, vì vậy tôi đoán bạn nên gắn nhãn là ECMAScript 6 để tránh nhầm lẫn. 2. Nếu bạn đặt <pre id="a"/>phần HTML, bạn không cần các <pre>thẻ trong mã.
Dennis

1
Hoặc, tốt hơn nữa, loại bỏ HTML và thay thế document.getElementById`a` bằng document.body.
NinjaBearMonkey

1
Tôi đã nhận được 87 byte bằng cách tạo HTML <pre>và thực hiện document.all[4]. Điều này cho phép bạn thoát khỏi chuỗi bao bọc và chỉ cần làm cho nó innerHTML=a?`...`:`...`}.
NinjaBearMonkey

1
Điều này đã ngừng hoạt động đối với tôi trên Chrome
Beta Decay

5

Bash, 86 84 byte

while sleep 1;do printf "\e[2J_o_\n 0\n/ \\";sleep 1;printf "\r\e[2J\o/\n_0_\n";done

3

Python 2, 99 byte

Chạy trên Windows

import os,time
g=0
while 1:os.system("cls");print["\\o/\n_0_","_o_\n 0 \n/ \\"][g];time.sleep(1);g=~g

Đối với máy UNIX, thêm hai byte:

import os,time
g=0
while 1:os.system("clear");print["\\o/\n_0_","_o_\n 0 \n/ \\"][g];time.sleep(1);g=~g

3

ôi - 95 92 86 84 83

END{
    for(;++j;)
        system("clear;printf '"(j%2?"_o_\n 0\n/ \\":"\\o/\n_0_")"';sleep 1")
}

Tập luyện tốt đẹp: D Chỉ tự hỏi nếu điều này là có thể làm được. Không có giá để đạt được mặc dù ...;)

Nếu ai đó muốn kiểm tra điều này: sau khi bạn chạy chương trình, bạn phải nhấn Ctrl + D (kết thúc đầu vào) để thực sự bắt đầu khối END. Để chấm dứt nó, tôi phải sử dụng Ctrl + Z.

Tôi cũng có cái này, chỉ có 74 byte, nhưng nó bắt đầu bằng việc tạm dừng một giây không phải là hành vi mong muốn mà tôi nghĩ

END{
    for(;1;print++j%2?"_o_\n 0\n/ \\":"\\o/\n_0_")
        system("sleep 1;clear")
}

1
Liệu giấc ngủ đo khoảng thời gian ba giây?
trichoplax

Ôi chúa ơi. cảm ơn vì gợi ý :) Hoặc nếu đó không phải là một gợi ý: Không, điều này chỉ ngủ được 0,33 giây.
Cabbie407

Tôi không biết awk nhưng có vẻ như nó sẽ đo được trong vài giây. :)
trichoplax

1
Nó trông sẽ buồn cười hơn nếu nó di chuyển nhanh hơn, đến nỗi tôi quên mất việc chơi golf ở đó; D
Cabbie407

lệnh ngủ không phải là awk, đó là bash, btw
Cabbie407

2

Mẻ - 82 byte

Chỉnh sửa: Tắt lệnh hết thời gian và xóa dòng mới.

cls&echo _o_&echo  0&echo / \&timeout>nul 1&cls&echo \o/&echo _0_&timeout>nul 1&%0

Tôi đã thấy 2 câu trả lời hàng loạt tương tự khác vì vậy tôi không thực sự muốn đăng bài này, nhưng đây là lần đầu tiên tôi chơi golf.


1
Nhưng một trần timeout 1sẽ đặt rất nhiều đầu ra không được yêu cầu trên bảng điều khiển
edc65

Đúng, tôi đã có đầu ra thêm. Đã chỉnh sửa.
Peter Lenkefi

1
có thể >mulđó là lỗi loại hoặc có thể bạn không biết đó nullà gì . vi.wikipedia.org/wiki/Null_device
edc65

@ edc65 Việc rút lại bản sao-dán và không kiểm tra. Cảm ơn bạn!
Peter Lenkefi

2

BBC BASIC, 75 byte

Lưu ý rằng mã thông báo kéo nó xuống còn 75 byte. Khoảng trắng được thêm vào bởi IDE.

      g=0
   10 IFg=0THENPRINT"\o/":PRINT"_0_"ELSEPRINT"_o_":PRINT" 0 ":PRINT"/ \"
      g=1-g:WAIT 100CLS:GOTO10

Thuộc tính hiển thị kích thước chương trình


2

JavaScript ES6, 100 95 byte

(f=_=>{console.log(_?`_o_
 0
/ \\`:`\\o/
_0_`)
(b=setTimeout)(q=>(clear(),b(b=>f(!_))),1e3)})()

Đăng nhập vào giao diện điều khiển. Đã thử nghiệm trên Safari hàng đêm


2

Hàng loạt, 151 130 118 byte

cls
@echo _o_
@echo  0
@echo / \
@PING -n 2 127.0.0.1>NUL
cls
@echo \o/
@echo _0_
@PING -n 2 127.0.0.1>NUL
%0

Bây giờ bạn có thể lưu một vài byte vì OP đã xác nhận rằng dòng trống không cần phải được in rõ ràng
trichoplax

Bạn có thể chơi golf 12 ký tự bằng cách sử dụng @PING 127.0.0.1 -n 2>NULthay thế. Ping mặc định chờ khoảng một giây giữa các lần thử, vì vậy đây chỉ trong vài mili giây là chính xác, đủ gần cho thử thách này. Tham khảo
admBorkBork

đánh bại 12 byte nhờ TimmyD
Tối đa

2

CBM 64 BASIC V2, 121 119 112 117 byte

2?CHR$(147)+"\o/":?" 0":?"/ \"
3GOSUB7
4?CHR$(147)+"_o_":?"_0_"
5GOSUB7
6RUN
7A=TI
8IFTI-A<60THENGOTO8
9RETURN

?CHR$(147)xóa màn hình không? Nếu vậy, bạn có thể lưu 2 byte ngay bây giờ vì OP đã xác nhận rằng dòng trống không cần phải được in rõ ràng
trichoplax

Điều này không tạo ra khung hình động đầu tiên (nghĩa là trong đó các cánh tay được cân bằng).
Phi hành gia

bạn nói đúng ... Tôi sẽ sửa nó!
Tối đa

1

Julia, 70 byte

(trên Windows , bằng cách thay thế clearbằng cls, nhờ vào công cụ ngầm)

n(i=1)=(sleep(1);run(`cls`);print(i>0?"_o_
 0
/ \\":"\\o/
_0_");n(-i))

Trên Linux, 72 byte

n(i=1)=(sleep(1);run(`clear`);print(i>0?"_o_
 0
/ \\":"\\o/
_0_");n(-i))

Điều này sử dụng các dòng mới thực tế hơn là \nđể lưu một byte; mặt khác, ilà 1 hoặc -1 là "cờ" và nó sử dụng đệ quy để đạt được vòng lặp vô hạn. Gọi nó là một trong hai n(1)hoặc chỉ n().

Ngoài ra, run(`clear`)/ run(`cls`)sử dụng lệnh shell để xóa cửa sổ, vì Julia không có lệnh xóa cửa sổ tích hợp.


Nếu bạn chạy cái này trên windows, bạn sẽ tiết kiệm được hai byte bằng cách thay đổi clearthành cls(Tôi giả sử, tôi không biết gì về Julia).
undergroundmonorail

@undergroundmonorail - Cảm ơn, nhưng tôi sử dụng Ubuntu, cls không hoạt động. Hy vọng rằng Julia quyết định thực hiện một chức năng bù trừ thiết bị đầu cuối thực sự.
Glen O

@GlenO Trên Windows clshoạt động (xem câu trả lời của tôi)
Beta Decay

1

Batch Windows, 83 89

Chỉnh sửa xóa dòng trống sau khi OP làm rõ

@cls&echo _o_&echo  0&echo./ \&timeout>nul 1&cls&echo \o/&echo _0_&timeout>nul 1&%0

Nếu bạn thoát khỏi dòng trống trong người nhảy (dù sao cũng không thể nhìn thấy), điểm số là 83

Lưu ý: timeoutkhông có trong Windows XP. Nó hoạt động trong Vista hoặc các phiên bản mới hơn. Hơn nữa, timeoutkhông chính xác đến giây, vì vậy đây là một lựa chọn hoàn hảo để thực hiện bước 4 (Đợi một lát ( khoảng một giây ))


1

Javascript (ES6), 82 byte

Một sửa đổi của câu trả lời trước đó của tôi sử dụng bàn điều khiển. Hoạt động một phần trong Firefox, nhưng chỉ xóa bảng điều khiển trong Chrome, AFAIK.

a=!0,c=console,setInterval(_=>c.log(c.clear(a=!a)|a?`_o_
 0
/ \\`:`\\o/
_0_`),1e3)

Như mọi khi, đề nghị chào đón!


Yêu nó! Tôi nhận thấy rằng Chrome hiện đang thực hiện ES6 cho tôi!
Dom Hastings

@DomHastings Tôi chưa bao giờ phát triển trong Chrome, nhưng tôi nghe nói nó không hỗ trợ ES6 theo mặc định, vì vậy tôi cũng ngạc nhiên như bạn! :)
Sản phẩm ETH

1

JavaScript, 92 91 89 byte

x=0;setInterval(function(){console.log("\033c"+["_o_\n 0\n/ \\","\\o/\n_0_"][x^=1])},1e3)
  • Không có tính năng ES6 (nhưng sẽ ngắn hơn đáng kể với chúng)
  • Hoạt động với Node.js trên Linux (không biết về các môi trường khác)
  • Hoạt động một phần trong bảng điều khiển của Chrome ( cđược hiển thị thay vì xóa bảng điều khiển, phá vỡ đầu ra)

Xóa "\033c"+khỏi đoạn mã trên, các thao tác sau trong trình duyệt, nhưng không xóa bảng điều khiển.

x=0;setInterval(function(){console.log(["_o_\n 0\n/ \\","\\o/\n_0_"][x^=1])},1e3)


Công việc ấn tượng! Sử dụng các tính năng ES6, tôi nhận được 77: x=0;setInterval(_=>console.log("\033c"+[`_o_<line break> 0<line break>/ \\`,`\\o/<line break>_0_`][x^=1]),1e3)Vì một số lý do, JS sẽ không cho phép tôi vượt qua console.logchức năng và người đàn ông ASCII như một thông số phụ.
Sản xuất ETH

@ETHproductions Cảm ơn! Tôi đã nghĩ về việc thực hiện nó trong ES6, nhưng chưa bao giờ sử dụng nó và chưa cài đặt io.js, tôi quyết định không. Theo như không thể vượt qua console.logđể setInterval, lý do là chúng ta không đi qua các chức năng, nhưng gọi nó. Nó sẽ được đánh giá trước khi setIntervalđược gọi và vì console.lognó không quay trở lại, nên về cơ bản nó sẽ được chuyển undefinedđến setInterval. Có lý? Và cảm ơn vì đã rút ngắn nó!
Nateowami

Tôi hiểu những gì bạn đang nói, nhưng theo trang này , mã này sẽ hoạt động: x=0;setInterval(console.log,1e3,"\033c"+[_o_ <ngắt dòng> 0 <ngắt dòng> / \ `, \\o/<line break>_0_] [x ^ = 1])` Trên thực tế, nó không mang lại lên một lỗi nếu tôi thay thế console.logbằng alert.
Sản xuất ETH

Ah, tôi hiểu những gì bạn đang nói. Tôi nghĩ rằng vấn đề là chúng ta cần phải đăng nhập một cái gì đó khác nhau mỗi lần, nhưng "\033c"+[`_o_<line break> 0<line break>/ `,\\o/<line break>_0_`][x^=1]được đánh giá trước khi gọi đến setInterval.
Nateowami

0

Ruby, 79 byte

k=!0;loop{puts((k)?"\e[H\e[2J_o_\n 0\n/ \\":"\e[H\e[2J\\o/\n_0_");k=!k;sleep 1}

Yêu cầu mã thoát.


0

Forth, 86 byte

Yêu cầu GNU Forth cho các chuỗi thoát. Để chạy trong Forth không phải GNU, chỉ cần thay đổi S\"thành S"và các ký tự thoát sẽ không được in chính xác.

: P PAGE TYPE CR 999 MS ;
: R BEGIN S\" \\o/\n_0_" P S\" _o_\n 0 \n/ \\" P 0 UNTIL ; R


0

CBM BASIC v2.0 (68 ký tự)

0?"S_o_q||0q||N M":goS1:?"SMoN":?"_0_":goS1:gO
1wA161,255,pE(161):reT

Ở trên yêu cầu một số giải thích, vì đánh dấu Stack Exchange không thể hiện đúng các ký tự PETSCII:

  • Chương trình được hiển thị ở đây để thuận tiện cho chữ thường, nhưng có thể và nên được nhập và chạy ở chế độ chữ hoa trên Hàng hóa 64.
  • Các ký tự "S" đầu tiên và thứ ba thực sự nằm trong video đảo ngược và được tạo bằng cách nhấn CLRphím ( SHIFT+ HOME).
  • Các ký tự "q" thực sự nằm trong video đảo ngược và được tạo bằng cách nhấn con trỏ xuống ( CRSR ⇓).
  • "|" các ký tự thực sự nằm trong video đảo ngược và được tạo bằng cách nhấn con trỏ bên trái ( SHIFT+ CRSR ⇒).

0

sáp ong ,119 113 byte

ph0`J2[`}ghq'-<gh0N}`0`}gN`/o\`Ngh0`J`<
>g}`o`}N` `0>'d`0 `N`/ \`0hg>-'phg}`[2`b
dF1f+5~Zzf(.FP9f..F3_#     d   <

Giải thích về các phần quan trọng của chương trình:

left to right  right to left

3FBf   or       fBF3          27       ASCII code for (esc)
3             [x,x,3]•        set lstack 1st to 3
 F            [3,3,3]•        set lstack to 1st
  B           [3,3,27]•       1st=1st^2nd
   f                          push lstack 1st on gstack
——————
9PF.(f   or    f(.FP9         102400   counter to roughly match a wait time
                                       of 1 s on my i5 2410M Laptop
9             [x,x,9]•        set lstack 1st to 9
 P            [x,x,10]•       increment 1st
  F           [10,10,10]•     set lstack to 1st
   .          [10,10,100]•    1st=1st*2nd
    (         [10,10,102400]• 1st=1st<<2nd (100<<10=102400, arithmetic shift left)
     f                        push lstack 1st on gstack
——————
zZ~5+f   or    f+5~Zz         95       ASCII for '_'
z             [0,0,0]•        initialize lstack to zero
 Z            [0,0,90]•       get value from relative coordinate (0,0),
                              which is the location of `Z` itself, ASCII(Z)=90
  ~           [0,90,0]•       flip 1st and 2nd lstack values
   5          [0,90,5]•       set lstack 1st to 5 
    +         [0,90,95]•      1st = 1st+2nd
     f                        push lstack 1st on gstack

Việc fđẩy các giá trị trên gstack (ngăn xếp toàn cục) để sử dụng sau. Các giá trị này được truy cập bởi các hướng dẫn 0gh(hoặc nhân đôi hg0) và hg( gh). hxoay gstack lên trên, gđọc giá trị trên cùng của gstack và đẩy nó lên lstack (ngăn xếp cục bộ) của con ong (con trỏ lệnh).

}`o`}N` 0 `N`/ \`                      sequence to print the standing man

N`\o/`Ng}`0`}N                         sequence to print the jumping man

}`[2J`                        equivalent to the ANSI escape sequence (esc)[2J
                              to clear the screen
>-'p  or >-'q  or >  p        loop for counting down (wait 1 s)
d  <      b  <    d'-<

Giải thích sâu sau đây, nếu cần. Có lẽ với hoạt hình.


0

Deadfish , Không cạnh tranh (658 byte)

iiisisdddddoiiiiiiiiiiiiiiiioddddddddddddddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddsddddoiiiiiiiiiiiiiiiioddddddddddddddddoddddddddddddddddddddddodddsddodddddddddddddddoddddddddddddddddddddddsddddddddoddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoosddddddddoiiiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddddddddddddddddosdddddodddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddddddddddddddddsdddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoo

Đây là một giải pháp không cạnh tranh , vì nó không hoàn toàn đáp ứng các yêu cầu thách thức. Deadfish là một lanugage được giải thích rất kỳ lạ, chỉ có 4 lệnh và một bộ tích lũy. Bộ tích lũy là một biến byte đơn được khởi tạo ở 0. 4 lệnh là:

  • i = Tăng bộ tích lũy a = a + 1
  • d = Giảm bộ tích lũy a = a - 1
  • s = Bình phương bộ tích lũy a = a * a
  • o = Xuất ra bộ tích lũy print(a)

Vì ngôn ngữ không bao gồm sự lặp lại, xóa màn hình hoặc trì hoãn, nó không đáp ứng các yêu cầu. Sản lượng dự kiến:

_o_
 0 
/ \
(Blank line, not from the program)
\o/
_0_
(Blank line, not from the program)
(Blank line, not from the program)

Mã giải thích:

_  iiisisdddddo
o  iiiiiiiiiiiiiiiio
_  ddddddddddddddddo
\n dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddo
   ddddsddddo
0  iiiiiiiiiiiiiiiio
   ddddddddddddddddo
\n ddddddddddddddddddddddo
/  dddsddo
   dddddddddddddddo
\  ddddddddddddddddddddddsddddddddo
\n ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddo
\n o
\  sddddddddo
o  iiiiiiiiiiiiiiiiiiio
/  ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddo
\n dddddddddddddddddddddddddddddddddddddo
_  sdddddo
0  dddddddddddddddddddddddddddddddddddddddddddddddo
_  ddddddddddddddddddddddddddddddddddddddsdddddo
\n dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddo
\n o

Trình thông dịch Deadfish trong Python 3:

c=input()
o=""
a=0
for p in range(0,len(c)):
    i=c[p]
    if i=="i":
        a += 1
    if i=="d":
        a+=-1
    if i=="s":
        a=a*a
    if i=="o":
        o+=chr(a)
print(o)

0

Noodel , không biên dịch 24 byte

Không thể xóa vì Noodel được sinh ra sau khi thử thách được tạo :)

”ṛ|ọBCḊCBCḣ“\o/¶_0_ḷėçḍs

Thử nó:)

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

”ṛ|ọBCḊCBCḣ              # Creates a string that gets decompressed into "_o_¶¤0¤¶/¤\" and places it into the pipe.
           “\o/¶_0_      # Creates a string and places it into the pipe.
                   ḷ     # Unconditionally loop the code up to a new line or end of program.
                    ė    # Takes what is in the front of the pipe and puts it into the back.
                     ç   # Clears the screen and prints.
                      ḍs # Delays for one second.

Hiện tại không có phiên bản Noodel hỗ trợ cú pháp được sử dụng trong thử thách này. Đây là một phiên bản:

24 byte

\o/¶_0_ _o_¶¤0¤¶/¤\ḷçėḍs

<div id="noodel" code="\o/¶_0_ _o_¶¤0¤¶/¤\ḷçėḍs" input="" cols="5" rows="5"></div>

<script src="https://tkellehe.github.io/noodel/noodel-latest.js"></script>
<script src="https://tkellehe.github.io/noodel/ppcg.min.js"></script>

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.