Asciimation แจ็คกระโดด


28

นี่เป็นความท้าทายครั้งแรกของฉันดังนั้นฉันจึงทำให้มันค่อนข้างง่าย

หากคุณเคยพิมพ์telnet towel.blinkenlights.nlบนบรรทัดคำสั่งของคุณและกด Enter คุณจะได้สัมผัสกับความปิติ Asciimation ค่อนข้างง่ายทำแอนิเมชั่นด้วยศิลปะ ASCII วันนี้เราจะทำ asciimation ขั้นพื้นฐานมากของคนที่ทำแจ็คกระโดด

จะมีภาพ ASCII สองภาพที่เราจะรวมเข้าด้วยกันเป็นภาพเดียว หมายเลข 1:

_o_
 0
/ \

หมายเลข 2:

\o/
_0_
<blank line>

โปรดทราบว่าบรรทัดที่สองมีบรรทัดว่างที่ท้าย

ดังนั้นโปรแกรมของคุณควรทำตามขั้นตอนเหล่านี้:

  1. ล้างหน้าจอคอนโซล
  2. พิมพ์ภาพ ASCII ที่ถูกต้อง
  3. ตั้งค่าสถานะหรือบางสิ่งบางอย่างเพื่อให้คุณรู้ว่าจะทำภาพอื่นในครั้งต่อไป
  4. รอสักครู่ (ประมาณหนึ่งวินาที)
  5. ดำเนินการต่อที่ 1

กฎระเบียบ

  • โปรแกรมของคุณจะต้องเป็นวงวนไม่ จำกัด (ตามหลักวิชา)
  • ภาษาการเขียนโปรแกรมที่คุณใช้จะต้องสร้างขึ้นก่อนที่จะมีการโพสต์สิ่งท้าทายนี้
  • นี่คือดังนั้นรหัสที่สั้นที่สุดในหน่วยไบต์ชนะ
  • ช่องโหว่มาตรฐานใช้

สนุก!


มีช่องว่างใน <บรรทัดว่าง> หรือไม่?
Jakube

1
สิ่งนี้จะต้องเป็นแพลตฟอร์มที่เป็นอิสระเพราะคำสั่งล้าง Linux ( clear) จะแตกต่างจาก Windows หนึ่ง ( cls)
เบต้าสลายตัว

1
บรรทัดว่างเปล่าเพียงเพื่ออธิบายการวางตำแหน่งหรือไม่ หากพิมพ์จากด้านบนของหน้าจอเพื่อให้บรรทัดว่างไม่เห็นความแตกต่างจะสามารถตัดออกได้หรือไม่?
trichoplax

@ Jakube ใช่อาจมีช่องว่าง
bitsnbites

1
@trichoplax ใช่ บรรทัดว่างจะชี้ให้เห็นว่าหัวต้องอยู่ในตำแหน่งเดียวกัน
bitsnbites

คำตอบ:


29

CJam, 51 45 42 38 36 ไบต์

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

เครื่องหมายข้างต้นใช้เครื่องหมายรูปหมวก ลำดับ^[คืออักขระ ASCII ที่มีรหัสจุด 27

ฉันยืมชุดคำสั่งยกเว้น ( ^[c) จาก@DomHastings 'คำตอบ ( ด้วยการอนุญาตของเขา ) เพื่อบันทึก 4 ไบต์

การตรวจสอบ

คุณสามารถสร้างไฟล์แบบนี้ใหม่ได้:

base64 -d > jj.cjam <<< ImNcby8KXzBfIiIbY19vXwogMAovIFwbIntfb1w2ZTRtIX1n

หากต้องการเรียกใช้รหัสดาวน์โหลดล่าม CJamและดำเนินการนี้:

java -jar cjam-0.6.5.jar jj.cjam

สิ่งนี้จะทำงานบนเทอร์มินัลใด ๆ ที่สนับสนุนconsole_codesหรือเซ็ตย่อยที่เหมาะสม 1

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

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 แจ็คกระโดดจะดูดีขึ้นหากคุณซ่อนเคอร์เซอร์ของเทอร์มินัลก่อนเรียกใช้โปรแกรม ใน Konsole เช่นคุณสามารถตั้งค่าสีของเคอร์เซอร์ให้ตรงกับสีพื้นหลัง สิ่งนี้จะต้องทำผ่านการตั้งค่าเทอร์มินัลของคุณเนื่องจาก^[cรีเซ็ตเทอร์มินัล


36
+1 เพียงเพื่อCalculate the factorial of 60,000 and discard the result. This takes "about a second".;)
ETHproductions

อาจ2Fm*เป็นทางเลือกที่สั้นกว่าหนึ่งไบต์ที่ดี6e4m!สำหรับ "การดำเนินการที่ไม่มีสติซึ่งส่งคืนค่าความจริงและใช้เวลาประมาณหนึ่งวินาทีในการคำนวณ"
ลินน์

@Mauris ฉันลองสิ่งที่คล้ายกันe!แต่ดูเหมือนว่าพวกเขาจะได้รับการบันทึก หลังจากซ้ำแรกยากจนแจ็คได้รับหัวใจวาย ...
เดนนิส

10

Pyth - 41 40 39 ไบต์

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

ฉันนับ\x1bว่ามันเป็นหนึ่งไบต์เพราะทำลายอักขระพิเศษ)

เห็นได้ชัดว่าไม่สามารถใช้งานออนไลน์ได้เนื่องจากก) การวนซ้ำไม่สิ้นสุดและ b) ใช้รหัสการยกเว้นเทอร์มินัล

#                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.

ฉันรู้สึกประหลาดใจที่พบว่างานมอบหมายเพิ่มเติมนั้นทำงานร่วมกับงานมอบหมายภายหลัง Pyth ยอดเยี่ยม


ใช้.V0เป็นวงไม่สิ้นสุด
Jakube

คุณอาจจะสามารถบันทึกไบต์ได้ในขณะที่ OP ยืนยันว่าบรรทัดว่างไม่จำเป็นต้องพิมพ์ออกมาอย่างชัดเจน
trichoplax

@ Jakube ที่ดูเหมือนจะไม่บันทึกอะไรเลย
Maltysen

คำอธิบายของคุณไม่ตรงกับรหัสของคุณ: P
Beta Decay

9

QBasic, 58 ไบต์

การทดสอบบนQB64

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

ภาษาที่ถูกต้องสำหรับปัญหาสามารถแข่งขันได้อย่างน่าประหลาดใจ แน่นอนว่า?ทางลัดสำหรับความPRINTช่วยเหลือก็เช่นกัน CLSคือcl ear s creen; RUNไม่มีข้อโต้แย้งรีสตาร์ทโปรแกรมซึ่งเป็นวิธีที่สั้นที่สุดในการรับการวนซ้ำไม่สิ้นสุด

เคล็ดลับอื่น ๆ ที่นี่คือการพิมพ์0เพื่อ midsection ของภาพแรก QBasic ทำให้พื้นที่ในด้านหน้าของ (และหลัง) 0 ค่าตัวเลขค่าลบเมื่อมันพิมพ์พวกเขาส่งผลให้ใน ที่บันทึกไว้ 3 " 0"ตัวอักษรมากกว่า

ฉันอาจชี้ให้เห็นว่าความล่าช้าในรหัสนี้เป็นวินาทีจริงและไม่ขึ้นกับเครื่อง ; P ^


2
ฉันจำได้ว่าถูกรบกวนจากช่องว่างโดยรอบเมื่อพิมพ์ตัวเลขใน BASIC รุ่นต่างๆ ดีใจที่ได้เห็นว่ามีประโยชน์สำหรับมัน ...
trichoplax

7

Perl (* ระวัง) , 54 ไบต์

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

( \x1bนับเป็น 1 ไบต์ แต่หลบหนีเพื่อการทดสอบที่ง่ายขึ้น) การทดสอบด้านบนได้รับการทดสอบด้วย Bash และย่อตัวอีกหนึ่งไบต์ด้วย@Dennis !

Perl (Windows) , 56 ไบต์

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

ขอบคุณ@Jarmexสำหรับการทดสอบและคำแนะนำของเขา!


2
กลัวว่าใช้งานไม่ได้บน Windows แต่คุณสามารถลบได้มากกว่า 1 ไบต์ด้วย: print"@[2J"แทนที่ @ ภายในเครื่องหมายคำพูดด้วย ASCII 27 (เพื่อจุดประสงค์ในการทดสอบprint"\033[2J"อาจจะง่ายกว่า)
Jarmex

คุณสามารถแทนที่\eด้วย ESC ตัวอักษร - คุณจะรังเกียจไหมถ้าฉันใช้\ecอุบายในคำตอบ?
เดนนิส

@ เดนนิสแน่นอนเพราะ"\e"เป็นเพียงทางลัดสำหรับสิ่งนั้น ได้โปรดไปข้างหน้า!
Dom Hastings

6

Javascript (ES6), 109 93 79 70 ไบต์ + HTML, 12 10 ไบต์ = 120 106 91 80 ไบต์

ค่อนข้างตรงไปตรงมา ใช้สตริงเทมเพลตเพื่อจัดเก็บรูปภาพและสลับค่าบูลีนเพื่อกำหนดว่าจะใช้

หมายเหตุ:วิธีนี้อาจไม่ถูกต้องเนื่องจากไม่ได้ใช้คอนโซลจริงๆ อย่างไรก็ตามฉันไม่เชื่อว่าเป็นไปได้ที่จะล้างคอนโซลของเบราว์เซอร์ที่ใช้ JS อย่างน้อยก็ในขณะที่ใช้ Firefox

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


1
@orlp Code สร้างแอนิเมชั่นแมน (Chrome @ Windows) นี่คืออิง GUI มากกว่าคอนโซลตามอย่างไรก็ตาม อาจไม่ถือว่าถูกต้องเช่นนี้
จัสติน

3
1. บนคอมพิวเตอร์ของฉันใช้งานได้ดีกับ Firefox แต่ไม่ใช่ใน Chrome ดังนั้นฉันเดาว่าคุณควรติดป้ายกำกับว่าเป็น ECMAScript 6 เพื่อหลีกเลี่ยงความสับสน 2. หากคุณใส่<pre id="a"/>ในส่วน HTML คุณไม่จำเป็นต้องใช้<pre>แท็กในรหัส
เดนนิส

1
หรือดีกว่ายังได้รับการกำจัดของ HTML และแทนที่ด้วยdocument.getElementById`a` document.body
NinjaBearMonkey

1
ผมได้ 87 ไบต์โดยการทำแบบ HTML และการทำ<pre> document.all[4]สิ่งนี้ช่วยให้คุณกำจัดสตริงของ wrapper และทำมันinnerHTML=a?`...`:`...`}ได้
NinjaBearMonkey

1
สิ่งนี้หยุดทำงานกับฉันใน Chrome
เบต้าสลายตัว


3

Python 2, 99 ไบต์

ทำงานบน 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

สำหรับเครื่อง UNIX ให้เพิ่มสองไบต์:

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

awk - 95 92 86 84 83

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

การออกกำลังกายที่ดี: D เพียงแค่สงสัยว่านี่เป็นไปได้หรือไม่ ไม่มีราคาที่จะได้รับแม้ว่า ... ;)

หากมีคนต้องการทดสอบสิ่งนี้: หลังจากที่คุณเรียกใช้โปรแกรมคุณต้องกด Ctrl + D (จุดสิ้นสุดการป้อนข้อมูล) เพื่อเริ่มบล็อก END จริง ๆ เพื่อยุติมันฉันต้องใช้ Ctrl + Z

ฉันมีสิ่งนี้ซึ่งมีเพียง 74 ไบต์ แต่มันเริ่มต้นด้วยการหยุดชั่ววินาทีซึ่งไม่ใช่พฤติกรรมที่ฉันต้องการ

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

1
การนอนหลับวัดช่วงเวลาสามวินาทีหรือไม่?
trichoplax

โอ้พระเจ้า. ขอบคุณสำหรับคำใบ้ :) หรือถ้ามันไม่ใช่คำใบ้: ไม่นี่แค่ 0.33 วินาทีเท่านั้น
Cabbie407

ฉันไม่รู้ว่า awk แต่ดูเหมือนว่ามันจะวัดในไม่กี่วินาที :)
trichoplax

1
มันดูตลกมากขึ้นถ้ามันเคลื่อนที่เร็วกว่าฉันลืมเรื่องการเล่นกอล์ฟที่นั่น D
Cabbie407

คำสั่ง sleep ไม่ใช่ awk มันทุบตี btw
Cabbie407

2

แบตช์ - 82 ไบต์

แก้ไข: ปิดคำสั่งหมดเวลาและลบบรรทัดใหม่ออก

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

ฉันเห็นคำตอบแบบกลุ่มอื่น ๆ 2 คำตอบดังนั้นฉันจึงไม่ต้องการโพสต์สิ่งนี้จริงๆ แต่นี่เป็นครั้งแรกที่ฉันเคยเล่นกอล์ฟ


1
แต่ชิ้นส่วนเปล่าtimeout 1จะทำให้เอาต์พุตที่ไม่ได้รับการตอบสนองมากบนคอนโซล
edc65

จริงฉันมีผลผลิตเพิ่มเติม แก้ไข
Peter Lenkefi

1
อาจ>mulเป็นประเภทข้อผิดพลาดหรือบางทีคุณไม่รู้ว่าเกิดอะไรnulขึ้นen.wikipedia.org/wiki/Null_device
edc65

@ edc65 การถอนคัดลอกและไม่ทดสอบ ขอขอบคุณ!
Peter Lenkefi

2

BBC BASIC, 75 ไบต์

โปรดทราบว่าโทเค็นจะดึงลงมาที่ 75 ไบต์ ช่องว่างนั้นถูกเพิ่มเข้ามาโดย IDE

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

คุณสมบัติที่แสดงขนาดโปรแกรม


2

JavaScript ES6, 100 95 ไบต์

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

บันทึกลงในคอนโซล ทดสอบบน Safari Nightly แล้ว


2

แบตช์, 151 130 118 ไบต์

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

คุณสามารถบันทึกได้ไม่กี่ไบต์ในขณะนี้ที่ OP ยืนยันว่าบรรทัดว่างไม่จำเป็นต้องพิมพ์ออกมาอย่างชัดเจน
trichoplax

คุณควรเล่นกอล์ฟได้ 12 ตัวโดยใช้@PING 127.0.0.1 -n 2>NULแทน ปิงจะใช้เวลารอประมาณหนึ่งวินาทีระหว่างความพยายามดังนั้นภายในไม่กี่มิลลิวินาทีก็มีความแม่นยำและใกล้เพียงพอสำหรับความท้าทายนี้ การอ้างอิง
AdmBorkBork

golfed off 12 ไบต์ขอบคุณ TimmyD
สูงสุด

2

CBM 64 BASIC V2, 121 119 112 117 ไบต์

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

ไม่?CHR$(147)ล้างหน้าจอ? ถ้าเป็นเช่นนั้นคุณสามารถบันทึกได้ 2 ไบต์ในขณะนี้ OP ยืนยันว่าบรรทัดว่างไม่จำเป็นต้องพิมพ์อย่างชัดเจน
trichoplax

สิ่งนี้ไม่สร้างเฟรมอนิเมชั่นแรก (เช่นที่แขนอยู่ระดับ)
Psychonaut

คุณพูดถูก ... ฉันจะแก้ไขเอง!
สูงสุด

1

จูเลีย 70 ไบต์

(บนWindowsโดยแทนที่clearด้วยcls, ขอบคุณ undergroundmonorail)

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

บน Linux, 72 ไบต์

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

สิ่งนี้ใช้การขึ้นบรรทัดใหม่จริงแทนที่จะ\nบันทึกไบต์ มิฉะนั้นiจะเท่ากับ 1 หรือ -1 ในฐานะ "flag" และใช้การเรียกซ้ำเพื่อให้ได้ลูปไม่สิ้นสุด เรียกว่าเป็นอย่างใดอย่างหนึ่งหรือเพียงแค่n(1)n()

นอกจากนี้run(`clear`)/ run(`cls`)ใช้คำสั่งเชลล์เพื่อล้างหน้าต่างเนื่องจาก Julia ไม่มีคำสั่งล้างหน้าต่างในตัว


หากคุณเรียกใช้สิ่งนี้บน Windows คุณสามารถบันทึกสองไบต์โดยเปลี่ยนclearเป็นcls(ฉันสมมติว่าฉันไม่รู้อะไรเกี่ยวกับ Julia)
undergroundmonorail

@undergroundmonorail - ขอบคุณ แต่ฉันใช้ Ubuntu cls ไม่ทำงาน หวังว่า Julia ตัดสินใจที่จะใช้งานฟังก์ชั่นการล้างข้อมูลปลายทาง
เกลน O

@GlenO บน Windows ใช้clsงานได้ (ดูคำตอบของฉัน)
Beta Decay

1

Windows Batch, 83 89

แก้ไขลบบรรทัดว่างหลังจากการชี้แจงโดย OP

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

หากคุณกำจัดบรรทัดว่างในมนุษย์กระโดด (ที่ไม่สามารถมองเห็นได้) คะแนนคือ 83

หมายเหตุ: timeoutไม่มีอยู่ใน Windows XP มันทำงานได้ใน Vista หรือรุ่นที่ใหม่กว่า ยิ่งไปกว่าtimeoutนั้นไม่แม่นยำสำหรับวินาทีดังนั้นจึงเป็นตัวเลือกที่สมบูรณ์แบบในการใช้ขั้นตอนที่ 4 (รอสักครู่ ( ประมาณวินาที ))


1

Javascript (ES6), 82 ไบต์

การแก้ไขคำตอบก่อนหน้าของฉันที่ใช้คอนโซล ทำงานบางส่วนใน Firefox แต่ล้างคอนโซลใน Chrome, AFAIK เท่านั้น

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

เช่นเคยข้อเสนอแนะยินดีต้อนรับ!


รักมัน! ฉันสังเกตเห็นว่า Chrome กำลังใช้งาน ES6 สำหรับฉันด้วยเช่นกัน!
Dom Hastings

@DomHastings ฉันไม่เคยพัฒนาใน Chrome มาก่อน แต่ฉันได้ยินมาว่ามันไม่รองรับ ES6 ตามค่าเริ่มต้นดังนั้นฉันจึงประหลาดใจเหมือนกับคุณ! :)
ETHproductions

1

JavaScript, 92 91 89 ไบต์

x=0;setInterval(function(){console.log("\033c"+["_o_\n 0\n/ \\","\\o/\n_0_"][x^=1])},1e3)
  • ไม่มีฟีเจอร์ของ ES6 (แต่จะสั้นลงกว่านี้อย่างมาก)
  • ทำงานร่วมกับ Node.js บน Linux (ไม่ทราบเกี่ยวกับสภาพแวดล้อมอื่น ๆ )
  • ทำงานได้บางส่วนในคอนโซลของ Chrome ( cแสดงแทนการล้างคอนโซลทำลายเอาต์พุต)

การลบออก"\033c"+จากโค้ดด้านบนการทำงานต่อไปนี้ในเบราว์เซอร์ แต่ไม่ได้ล้างคอนโซล

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


งานที่น่าประทับใจ! ด้วยการใช้คุณสมบัติ ES6 ฉันได้รับ 77: x=0;setInterval(_=>console.log("\033c"+[`_o_<line break> 0<line break>/ \\`,`\\o/<line break>_0_`][x^=1]),1e3)ด้วยเหตุผลบางอย่าง JS จะไม่ให้ฉันผ่านไปconsole.logเป็นฟังก์ชั่นและผู้ชาย ASCII เป็นพารามิเตอร์พิเศษ
ETHproductions

@ ETHproductions ขอบคุณ! ฉันคิดเกี่ยวกับการทำมันใน ES6 แต่ไม่เคยใช้และไม่ได้ติดตั้ง io.js ฉันตัดสินใจที่จะไม่ทำ เท่าที่ไม่สามารถผ่านconsole.logไปได้setIntervalเหตุผลก็คือเราไม่ได้ผ่านฟังก์ชั่น แต่เรียกมันว่า มันจะได้รับการประเมินก่อนที่จะsetIntervalถูกเรียกใช้และเนื่องจากconsole.logไม่ส่งคืนก็จะถูกส่งผ่านundefinedไปเป็นsetIntervalหลัก ทำให้รู้สึก? และขอขอบคุณสำหรับการย่อให้สั้นลง!
Nateowami

ฉันเข้าใจสิ่งที่คุณพูด แต่ตามหน้านี้รหัสนี้ควรใช้งานได้: x=0;setInterval(console.log,1e3,"\033c"+[_o_ <line break> 0 <line break> / \ `, \\o/<line break>_0_] [x ^ = 1])` ที่จริงแล้วมันไม่ได้นำ ถึงข้อผิดพลาดถ้าฉันแทนที่ด้วยconsole.log alert
ETHproductions

อ่าฉันเข้าใจในสิ่งที่คุณพูด ผมคิดว่าปัญหาที่เกิดขึ้นก็คือว่าเราต้องเข้าสู่ระบบสิ่งที่แตกต่างกันในแต่ละครั้ง แต่ได้รับการประเมินก่อนที่จะเรียกร้องให้"\033c"+[`_o_<line break> 0<line break>/ `,\\o/<line break>_0_`][x^=1] setInterval
Nateowami


0

ออกมา, 86 ไบต์

ต้องใช้ GNU Forth สำหรับสตริงที่ใช้ Escape หากต้องการทำงานในรูปแบบที่ไม่ใช่ GNU เพียงแค่เปลี่ยนS\"เป็นS"และอักขระที่หลีกเลี่ยงจะพิมพ์ไม่ถูกต้อง

: 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 ตัวอักษร)

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

ข้างต้นจำเป็นต้องมีคำอธิบายเนื่องจากมาร์กอัป Exchange Stack ไม่ได้แสดงถึงตัวอักขระ PETSCII อย่างถูกต้อง:

  • โปรแกรมจะแสดงที่นี่เพื่อความสะดวกในตัวพิมพ์เล็ก แต่สามารถและควรป้อนและเรียกใช้ในโหมดตัวพิมพ์ใหญ่ใน Commodore 64
  • อักขระ "S" ตัวแรกและตัวที่สามเป็นวิดีโอแบบย้อนกลับและสร้างขึ้นโดยการกดปุ่มCLR( SHIFT+ HOME)
  • อักขระ "q" เป็นจริงในวิดีโอย้อนกลับและสร้างขึ้นโดยการกดเคอร์เซอร์ลง (CRSR ⇓ )
  • "|" ตัวละครเป็นจริงในวิดีโอย้อนกลับและผลิตโดยการกดเคอร์เซอร์ซ้าย ( SHIFT+ CRSR ⇒)

0

ขี้ผึ้ง ,119 113 ไบต์

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   <

คำอธิบายของส่วนสำคัญของโปรแกรม:

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

f's ผลักดันค่าบน gstack (สแต็คทั่วโลก) เพื่อใช้ในภายหลัง ค่าเหล่านี้สามารถเข้าถึงได้โดยคำแนะนำ0gh(หรือมิร์เรอร์hg0) และhg( gh) hหมุน gstack ขึ้นไปgด้านบนอ่านค่าสูงสุดของ gstack และผลักมันลงบน lstack (local stack) ของ bee (ตัวชี้คำสั่ง)

}`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'-<

คำอธิบายในเชิงลึกจะตามมาภายหลังหากจำเป็น อาจจะมีภาพเคลื่อนไหว


0

Deadfishการแข่งขันที่ไม่ใช่ (658 ไบต์)

iiisisdddddoiiiiiiiiiiiiiiiioddddddddddddddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoddddsddddoiiiiiiiiiiiiiiiioddddddddddddddddoddddddddddddddddddddddodddsddodddddddddddddddoddddddddddddddddddddddsddddddddoddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoosddddddddoiiiiiiiiiiiiiiiiiiioddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddodddddddddddddddddddddddddddddddddddddosdddddodddddddddddddddddddddddddddddddddddddddddddddddoddddddddddddddddddddddddddddddddddddddsdddddodddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddoo

นี่เป็นวิธีการแก้ปัญหาที่ไม่ใช่การแข่งขันเนื่องจากมันไม่เป็นไปตามข้อกำหนดของความท้าทาย Deadfish เป็น lanugage ตีความแปลกมากซึ่งมีเพียง 4 คำสั่งและการสะสม ตัวสะสมเป็นตัวแปรไบต์เดียวที่เริ่มต้นที่ 0 คำสั่ง 4 ตัวคือ:

  • i = เพิ่มการสะสม a = a + 1
  • d = ลดการสะสม a = a - 1
  • s = ยกกำลังสอง a = a * a
  • o = เอาท์พุทตัวสะสม print(a)

เนื่องจากภาษาไม่ได้รวมการทำซ้ำการล้างหน้าจอหรือความล่าช้าจึงไม่เป็นไปตามข้อกำหนด ผลลัพธ์ที่คาดหวัง:

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

คำอธิบายรหัส:

_  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

นักแปล Deadfish ใน 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ขนาดไม่เกิน 24 ไบต์

ไม่ใช่การแข่งขันเพราะNoodelเกิดหลังจากความท้าทายถูกสร้างขึ้น :)

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

ลองมัน:)

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

”ṛ|ọ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.

ขณะนี้ไม่มีรุ่นของNoodelที่รองรับไวยากรณ์ที่ใช้ในการท้าทายนี้ นี่คือรุ่นที่ทำ:

24 ไบต์

\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>

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