작업:
주어진 .txt
ASCII 아트 프레임 파일로 분리 각각 \n
초당 1 개 프레임과 프레임 (가 불분명 한 경우 본 실시 예 참조)를 출력 동화상한다.
\n
마지막 프레임 에는 후행이 있습니다.
각 프레임 치수는 다음과 같습니다.
- X <80
- Y <20
규칙
- 다음 프레임이 표시되기 전에 이전 프레임을 삭제해야하므로 각 프레임을 터미널에 인쇄하는 것만으로는 정답이 아닙니다.
- 새로운 기능 변수에 저장되거나 sys args에서 원하는 파일 이름을 얻을 수 있습니다.
- 새로운 이미지는 무한정 반복되어야합니다
- 이것은 코드 골프입니다 : 가장 작은 프로그램이 이깁니다.
예
입력
0 0
0 0
00000
0 0
0 0
00000
0
00000
0
00000
0 0
0 0
0
0
0
산출
언 골프
import curses, time
stdscr = curses.initscr()
Frames = file.read(file('Frames.txt')).split('\n')
while True:
y = 0
for i in range(len(Frames)):
stdscr.addstr(y,0,Frames[i])
stdscr.refresh()
y += 1
if Frames[i] == '':
y = 0
stdscr.clear()
time.sleep(1)
답변
수학, 41 바이트
Import@f~StringSplit~"\n\n"~ListAnimate~1
파일 이름이 variable에 저장 될 것으로 예상합니다 f
.
이것은 Mathematica의 우선 순위 규칙이 처음 @
이며 .~.~.
내가 필요한 방식입니다.
Btw,이 스 니펫은 파일 확장자가 .txt
(Mathematica가 그에 따라 가져 오기를 수행하는 방법을 추측하려고하기 때문에) 이외의 것이면 끔찍하게 잘못 될 수 있지만 운 좋게도 파일 끝은 도전 사양의 일부입니다.
답변
배쉬, 82
IFS=
clear
for((;;)){
while read a;do
[ "$a" ]&&echo $a||(sleep 1;clear)
done<$1
}
.txt 파일의 파일 이름이 스크립트의 첫 번째 인수로 제공되었다고 가정합니다.
이 작업을 수행하려면 .txt 파일 끝에 빈 줄이 있어야합니다.
@professorfish와 @DigitalTrauma에게 특별한 감사를드립니다.
답변
루비, 88 86 56 55 자
$<.read.split($/*2).cycle{|i|system'cls';$><<i;sleep 1}
이 프로그램은 파일 이름이 첫 번째 인수로 주어진다고 가정합니다.
개선 사항을 공유해 주신 Ventero에게 감사드립니다!
언 골프 :
$<.read.split($/*2).cycle{ |i| # read file, split by two newlines, and loop
system 'cls' # clear screen
$><<i # print the current array item
sleep 1 # sleep one second
}
이 프로그램은 파일을 읽고 청크로 분할 한 후 화면을 지운 후 각 청크를 개별적으로 인쇄합니다. cls
Windows에서만 작동합니다. 의 변형 clear
은 57 자입니다.
답변
디아 로그 APL (64)
(이번 Mathematica를 이길 수는 없습니다. 모든 것이 내장되어있는 것 같습니다.)
{⎕ML←3⋄{⎕SM←1 1,⍨⊂⊃⍵⊂⍨~⍵∊⎕TC⋄⎕DL 1}¨M⊂⍨~(4/1)⍷⎕TC∊⍨M←80 ¯1⎕MAP⍵}
파일 이름을 인수로 사용하는 함수입니다. 파일이 Windows ( \r\n
) 형식 이라고 가정 합니다.
설명:
⎕ML←3
: 마이그레이션 레벨을 3으로 설정 (⊂
APL2의 분할 기능으로 사용 가능)M←80 ¯1⎕MAP⍵
: 올바른 인수로 지정된 파일을 ASCII 파일로 읽고 내용을에 저장하십시오M
.M⊂⍨~(4/1)⍷⎕TC∊⍨M
: 4 개의 연속적인 터미널 제어 문자를 모두 찾아서 분할M
합니다. 이것은 각 프레임을 제공합니다.{
…}¨
:이 각각에 대해 …⊂⊃⍵⊂⍨~⍵∊⎕TC
: 터미널 제어 문자에서 인수 (= 한 프레임)를 분할 한 다음 벡터 벡터를 행렬로 변환합니다 (따라서 각 행을 별도의 행에 표시⎕SM
합니다. 제어 문자를 이해하지 못하기 때문에 필요 합니다).⎕SM←1 1,⍨
:⎕SM
창 왼쪽 위에 표시합니다 .⎕DL 1
다음 1 초 동안 기다립니다.
답변
어, 53
BEGIN{RS=RS RS}{system("clear")}1;{system("sleep 1")}
새로운 규칙 :
어, 74
BEGIN{RS=z}{a[NR]=$0}END{while(!system("sleep 1;clear"))print a[i++%NR+1]}
답변
펄, 40
seek ARGV,0,!eof;sleep 1;system clear
로 실행
perl -p00 frames.pl < animation.txt
(즉, STDIN을 통해 애니메이션 파일을 읽습니다). 계산에 3 바이트 p00
가 추가되었습니다. Windows 대신 2 자 (즉 , Windows에서 38 자)보다 짧습니다 . 또는 휴대가 가능합니다.cls
clear
seek ARGV,0,!eof;sleep 1;system$^O=~/Win/?cls:clear
또는 규칙을 약간 늘리면 (그리고 31 + 3 = 34 ) :
seek ARGV,sleep(1)&`reset`,!eof
답변
리볼, 74
forever[foreach s split to-string read f"^/^/"[call"clear"print s wait 1]]
파일 이름이 variable에 저장 될 것으로 예상합니다 f
. 아래는 골프화되지 않은 예입니다.
f: %ascii-art.txt
forever [
foreach s split to-string read f "^/^/" [
call "clear"
print s
wait 1
]
]