평범한 사람처럼 가장자리 잘라 내고 먹기


47

가장자리 잘라 내고는 5 개의 독특한 맛이있는 색의 사탕입니다. (p) urple, (g) reen, (y) ellow, (o) range 및 (r) ed로 표시되는 포도, 녹색 사과, 레몬, 오렌지 및 딸기. 나는 모든 다른 색을 분류 한 다음 순서대로 먹음으로써 가장자리 잘라 내고 먹었습니다. 사무실에서 몇 가지 이상한 모습을 보인 후 나는 평범한 사람처럼 먹는 척합니다. 당신의 임무는 이것을 흉내내는 것입니다.

귀하의 코드 (전체 프로그램 또는 기능)는 입력으로 합리적인 크기의 스키 틀 (10x10) 배열을 수신합니다. 이 배열은 정렬되지 않은 스키 틀의 더미를 나타냅니다. 당신의 임무는 가장 좋아하는 색에서 좋아하는 색을 "먹는"것입니다. 내가 선호하는 순서는 포도, 녹색 사과, 레몬, 오렌지, 딸기이지만, 지속적으로 시행되는 한 주문을 자유롭게 선택할 수 있습니다 (제출서에 선호 사항을 기재하여 판단 할 수 있도록하십시오). 각 사탕을 먹은 후에는 코드가 입력 한 것과 같은 형식으로 나머지 조각을 공백으로 대체하여 출력합니다. 당신이 좋아하는 것만 남을 때까지 반복합니다. 먹을 스키 틀을 선택할 수 있습니다 (임의적이거나 결정적 일 수 있음). 후행 공백은 유지해야합니다.

예를 들어, 출력 순서는 다음과 같습니다 (간단하게 5x5를 사용하고 공백을로 표시 .).

start   1     2     3     4     5        n 
.org. .org. .org. .org. .or.. .or..    ..r..
prgrg .rgrg .rgrg .rgrg .rgrg .r.rg    .r.r.
gggpr gggpr ggg.r ggg.r ggg.r ggg.r    ....r
oyyor oyyor oyyor oyyor oyyor oyyor    ....r
.r.p. .r.p. .r.p. .r... .r... .r...    .r...

이것은 이므로 바이트 단위의 가장 짧은 코드가 승리합니다.

TL; DR 규칙 :

  • 제출은 전체 프로그램 또는 기능 일 수 있습니다
  • 합리적인 방법 (STDIN, 함수 인수 등)을 사용하여 적절한 형식 (문자열, 목록, 행렬 등)으로 입력 할 수 있습니다. 그러나 행 사이에 약간의 묘사가 있어야합니다.
  • 출력은 합리적인 방법 (STDOUT, 함수 반환 등)으로 입력 한 것과 동일한 형식으로 생성되어야합니다. 중간 출력은 제한되거나 구분되지 않을 수 있습니다
  • 첫 번째 출력은 첫 번째 입력이어야합니다
  • 후행 공백은 보존해야합니다
  • 모든 색상 순서를 사용할 수 있습니다 (답변에 나열)
  • 현재 색상의 가장자리 잘라 내고 먹을 수 있습니다
  • 마지막 출력은 좋아하는 색상과 공백이어야합니다.
  • 가능하면 온라인 컴파일러에 대한 링크를 포함하여 제출을 테스트하십시오.

4
@MukulKumar, 맞아, 당신은 당신이 갈수록 더 나아지
기를 원합니다

2
스키 틀을 단일 100- 스키 틀 스트링, 줄 바꿈 또는 기타로 받아 들일 수 있습니까?
Gabriel Benamy

1
중간 출력을 다른 것으로 분리해야합니까?
Poke


8
이 과제를 입력하는 것을 고려한 다음 " 제출에 선호 사항을 적어 판단하여 판단하십시오 " 읽어보십시오 . 나는 사람들이 이미 내 취향을 너무 판단한다고 생각합니다!
Toby Speight

답변:


16

젤리 , 16 14  13 바이트

Ṅ⁶ỤṪ$¦µQL>3µ¿

TryItOnline!

자신의 강박 장애에 대해 진지한 사람은 알파벳순으로 가장 좋아합니다!

입력 및 출력을 텍스트로 취합니다 (즉, 행은 줄 바꾸기로 구분됩니다).

방향을 반대로 바꾸고 다른 방법을 사용하여 3 바이트를 절약했습니다. 알파벳에서 문자를 찾는 것이 아니라 등급을 매 깁니다.

어떻게?

Ṅ⁶ỤṪ$¦µQL>3µ¿ - Main link: Skittle text
      µ    µ  - monadic chain separation
            ¿ - while
       Q      - unique items
        L     - length
         >3   - greater than 3 (until only new lines, spaces and 'g's remain)
Ṅ             -     print z and a line feed, yield z
    $         -     treat last two links as a monad
  Ụ           -         grade up (get indices of: new lines; spaces; gs; os; ps; rs; ys)
   Ṫ          -         tail (the last of those, so last y if there is one, else last r, ...)
 ⁶            -     space character
     ¦        -     apply at index (replace that index with a space)

8

자바 스크립트 (ES6), 74 75 74 바이트

포도, 녹색 사과, 레몬, 오렌지, 딸기 등의 도전 과제에 설명 된대로 맛이 주문됩니다.

중간 출력은 개행으로 구분됩니다.

f=(s,n=3,r=s)=>(S=s.replace('oygp'[n],' '))!=s&&(r+=`
`+S)||n--?f(S,n,r):r

테스트 사례

이 테스트 사례는 5x5 예제를 사용하고 있습니다. 다른 그리드 크기는 예상대로 작동합니다.


8

세게 때리다, 48, 46 바이트

최신 정보:

  • raw 매개 변수를 사용하여 printf에 2 바이트를 절약했습니다.

골프

sed -nz "p;:a;`printf "s/%s/ /p;ta;" p g y o`"

stdin에서 입력을 받고 stdout으로 인쇄합니다. 보라색, 녹색, 노란색, 주황색을 먹습니다.

동등한 sed 프로그램은 다음과 같습니다.

p;:a;s/p/ /p;ta;s/g/ /p;ta;s/y/ /p;ta;s/o/ /p;ta

샘플 출력 (구분 기호는 명확성을 위해서만)

-----
 org 
prgrg
gggpr
oyyor
 r p 
-----
-----
 org 
 rgrg
gggpr
oyyor
 r p 
-----
-----
 org 
 rgrg
ggg r
oyyor
 r p 
-----
-----
 org 
 rgrg
ggg r
oyyor
 r   
-----
-----
 or  
 rgrg
ggg r
oyyor
 r   
-----
-----
 or  
 r rg
ggg r
oyyor
 r   
-----
-----
 or  
 r r 
ggg r
oyyor
 r   
-----
-----
 or  
 r r 
 gg r
oyyor
 r   
-----
-----
 or  
 r r 
  g r
oyyor
 r   
-----
-----
 or  
 r r 
    r
oyyor
 r   
-----
-----
 or  
 r r 
    r
o yor
 r   
-----
-----
 or  
 r r 
    r
o  or
 r   
-----
-----
  r  
 r r 
    r
o  or
 r   
-----
-----
  r  
 r r 
    r
   or
 r   
-----
-----
  r  
 r r 
    r
    r
 r   
-----

온라인으로 사용해보십시오!


7

파이썬 2, 60 57 56 바이트

def f(s):print s;q=max(s);q>'g'and f(s.replace(q,' ',1))

반복

알파벳 순으로 역순으로 먹는 재귀 함수는 녹색을 마지막으로 남겨 둡니다.

입력 s은 행 구분 기호 'g'(예 : 줄 바꿈 또는 쉼표) 보다 작은 행 구분 기호가있는 문자열입니다 .

이 함수는 입력을 인쇄 한 다음 입력에 'g'보다 큰 값이 포함되어 있으면 재귀가 발생하여 최대 문자의 첫 번째 항목이 공백으로 대체 된 상태로 입력을 전달합니다.

(거의 내 젤리 답변 의 포트입니다 .)


6

펄, 53 46 + 2 = 48 바이트

로 실행 -0n

@Dada 덕분에 -10 바이트

편집 : 또한 지적을 한 @Dada 덕분에 입력을 첫 번째 출력으로 인쇄하는 것을 잊었습니다. 수정되었습니다.

say;eval sprintf"say while s/%s/./;"x4,p,o,g,r

이 답변에는 약간의 속임수가 포함되어 있으므로 진행 상황을 자세히 설명하겠습니다.

우선, Perl은 다중 라인 매개 변수가 전달되는 것을 좋아하지 않습니다. 변수 $/는 입력 레코드 구분 기호이며 입력에 저장된 문자를 발견 할 때마다 인터프리터는 해당 입력을 종료하고 새 입력을 시작합니다. 기본 내용은 개행 문자 \n이므로 여러 줄 문자열을 전달할 수 없습니다. 그렇게하려면 $/내용에서 설정 을 해제해야합니다 . -0플래그가 오는 곳 입니다. 설정 -0nullvariable에 저장 되어 $/인터프리터가 모든 것을 $_한 번에 암시 적 변수로 읽을 수 있도록합니다 .

다음 속임수는 eval진술입니다. 정확히 eval뭐하는거야? 우리는 성명서 eval의 결과 sprintf를 다음과 같이 분류하고 있습니다.

가장 먼저 sprintf전달되는 것은 "say while s/%s/./;"4 번 반복 되는 문자열입니다 .

say while s/%s/./;say while s/%s/./;say while s/%s/./;say while s/%s/./;

그런 다음 sprintf네 개의 기본 단어 ()가 전달 p,o,g,r되어의 sprintf각 인스턴스를 대체 하여 명령문에 보간됩니다 %s. 우리가 얻는 것은 다음 문자열이며 eval함수에 전달됩니다 .

say while s/p/./;say while s/o/./;say while s/g/./;say while s/r/./;

while루프는 expression을 평가하여 s/[color]/./암시 적 변수에있는 색상의 첫 번째 인스턴스를 $_마침표로 바꿉니다 . 대체가 이루어지면를 반환하고 1, 그렇지 않으면 아무것도 반환하지 않습니다. 때문에 s///부작용이 있고, 원래의 변수를 수정 $_내용이 다음 통해 인쇄를 say. 이 루프의 네 가지 버전이 수행되어 자주색, 주황색, 녹색 및 빨간색을 대체하고 노란색 만 남습니다.

노랑색이 남아있는 이유는 y실제로는 함수이기 때문에 그 단어 y대신에 문자를 사용하면 오류가 발생할 수 있기 때문 입니다. 따옴표를 묶거나 (+2 바이트) 대문자 Y를 사용하여 대소 문자를 구분하지 않고 (+1 바이트) 만들면이를 변경할 수 있지만 경우 모든 바이트 수가 계산되므로 실제로 마음에 들기로 결정했습니다. 레몬이 가장 주근깨가 있습니다.

TL; DR : Grape, Orange, Green Apple, Strawberry, Lemon


-0플래그는 약 10 바이트를 절약해야합니다
Dada

또한, 나는 당신이 규칙을 놓친 것을 두려워합니다First output shall be the first input
Dada

1
2 바이트를 절약하기 위해 개인 취향을 희생 해
주셔서 감사

4

펄, 30 31 33 + 2 = 32 33 35 바이트

for$x(g,o,p,r){say;s/$x/ /&&redo}

-n0(2 바이트 페널티)로 실행하십시오 .

분명히, 나는 프로그램이 그런 식으로 짧아지기 때문에 Skittles를 알파벳 순서로 먹는 것을 좋아합니다. 프로그램은 실제로 많은 설명을 필요로하지 않습니다 : -n0입력을 암시 적으로 읽습니다 ( -n" 암시 적으로 입력을 읽습니다 ", -0"개행에서 입력을 끊지 않음 "을 의미 함); for$x(g..r)와 루프 실행 $x에서 각 문자의 세트 gr차례로을; say;돌연변이 후 현재 입력을 인쇄합니다. s/$x/ /가능하면 한 복사본 $x(특히 첫 번째)을 공백으로 바꿉니다 . 및 &&redo교체가 성공하면 (루프 카운터를 진행하지 않고) 괄호 안의 부호를 반복한다.

이 프로그램은 길이를 변경하지 않고도 더 많은 취향의 풍미에 쉽게 일반화 할 수 있으며 모든 크기의 파일로 작동합니다.

테스트 할 수있는 Ideone 링크가 있습니다. (필자는 세트에 시작 라인의 몇 가지를 추가했다, 그래서 Ideone, 당신은 명령 줄 옵션을 지정하는 것을 허용하지 않습니다 -n0그리고 -M5.010당신은 무료로 얻을.)


1
동일한 스키 틀 더미를 여러 번 인쇄 할 수 있는지 잘 모르겠습니다. (실제로는 할 수 없다고 생각합니다.) 아마도 say;for$x(g..r){say while s/$x/ /}?
Dada

아 맞다. 나는 원래 for$x(p,o,g,r)하지 않았을 것입니다. say while1 바이트 더 길고 대안으로 고려한 것이므로 간단히 변경할 수 있습니다.

그리고 say;규칙은 다음 과 같이 말하기 때문에 시작해야합니다.First output shall be the first input
Dada

이 경우 for$x(g,o,p,r)입력을 먼저 복사하는 버전 으로 돌아갑니다 . 색상이 누락 된 경우 검색하는 데 약간의 시간이 걸리지 만 스키 틀 팩에서 색상이 누락 될 것으로 예상하지는 않습니다. 레코드의 경우 say;첫 번째 버전은 37 바이트입니다.

Dada의 원래 의견은 여전히 ​​스탠드되어 있습니다. 서있는 코드는 때때로 같은 구성을 두 번 연속으로 인쇄합니다 (예 : 녹색 끝에서 한 번, 주황색 시작에서 두 번째로).
DLosc

4

C #을 134 148 바이트

주문: G -> O -> Y -> P -> R

I=>{var v=new string(I)+";\n";int i,j=0,c;for(;j<4;){c="goyp"[j++];for(i=0;i<I.Length;i++)if(I[i]==c){ I[i]='.';v+=new string(I)+";\n";}}return v;};

@Poke의 답변과 비슷한 것을 사용했습니다. 현재 문자 배열을 문자열로 변환해야하기 때문에 조금 더 깁니다. (


하아! 3 문자로 당신을 이길!
Mukul Kumar

4

Java 7, 139135130151138135 바이트

void t(char[]s){int i,j=-1;for(;++j<5;)for(i=-1;++i<109;)if(j>3|s[i]=="yogp!".charAt(j)){System.out.println(s);if(j>3)return;s[i]=32;}}

노란색, 주황색, 녹색, 보라색, 빨간색 순서로 가장자리 잘라 내고 먹습니다

나는 이것이 2 인쇄 문보다 낫다고 생각한다.>.>


1
물론 당신은 함수가 skit : P -3이라는 이름을 가질 수 있습니다!
Yodle

1
@Yodle 죄송합니다! hahaha
Poke

1
우리가 항상 10x10 그리드를 수신한다면 다음과 같이 길이를 하드 코딩 할 수 있습니다.s.length
Poke

1
: s
Yodle

1
@Yodle 그래서 ""먹고있는 이유입니다 skittles first;) ... 잠깐만 요, 내가 그 트릭을 깨뜨린 것 같아요
Poke

4

C 145-5-18-1 = 121 바이트

#define l(a)for(a=0;a<10;a++)
i,j,k,b='a';F(char a[][11]){while(b++<'x')l(i)l(j)if(a[i][j]==b){a[i][j]=32;l(k)puts(a[k]);puts("");}}  

ungolfed + 예쁜

#include<stdio.h>
#include<windows.h>
i,j,k;
F(char a[][11])
{
    char b='a';
    while(b++<'x')
        for(i=0;i<10;i++)
            for(j=0;j<10;j++)
                if(a[i][j]==b)
                {
                    system("cls");
                    a[i][j]=32;
                    for(k=0;k<10;k++)
                        puts(a[k]);
                    puts("");
                    Sleep(35);
                }
}
main()
{
    char a[][11]={
            "gggggggggg",
            "goooooooog",
            "goppppppog",
            "goprrrrpog",
            "gopryyrpog",
            "gopryyrpog",
            "goprrrrpog",
            "gopppppppg",
            "goooooooog",
            "gggggggggg"
    };
    for(i=0;a[i][j];)
        puts(a[i++]);
    F(a);
}  

여기서는 a[][11]종료에 1 문자가 필요한 길이 11의 n- 문자열을 취해야하므로 기술적으로 10 개의 문자 만 표시됩니다.

order : 알파벳순
으로이 함수는 'g'주어진 입력에서 확인하여 1/1을 제거한 'g'다음 다음 일치 항목 (아마 문자 'o')을 찾을 때까지 변수 홀딩을 증가 시킨 다음 일치 하는 문자를 제거합니다.
단점은이 기능이 너무 신중하다는 것입니다. 따라서 Skittels가 26문자 az와 코드 이름 이 다른 색상의 경우이 기능은 해당 입력도 처리합니다 ...


지금 3 이상 : P
Yodle

@Yodle yeah ..로 정의 할 수있는 매크로 덕분입니다 #define. 19 바이트를 줄
Mukul Kumar

3

옥타브, 49 바이트

알파벳 순서로 가장자리 잘라 내고 가장 높은 ASCII 코드를 먹는다.

A=input("");do [~,p]=max(A(:));A(p)=32 until A<33

3

ES6 (자바 스크립트) 72, 71 바이트

EDITS :

  • 마이너스 템플릿 리터를 사용하여 1 바이트

Javascript의 비 재귀 버전입니다.

골프

s=>{r=s;for(c of`pogy`)while(s!=(s=s.replace(c,' ')))r+=`
`+s;return r}

입력과 출력은 여러 줄로되어 있으며 "purple => orange => green => yellow"순서로 알약을 먹는다.

테스트

S=s=>{r=s;for(c of`pogy`)while(s!=(s=s.replace(c,' ')))r+=`
`+s;return r}

console.log(
S(` org 
prgrg
gggpr
oyyor
 r p `)
);


2

파이썬 3-141 99 75 바이트

s=input();[exec("print(s);s=s.replace(c,' ',1);"*s.count(c))for c in'orgy']

프로그램은 순서대로 스키 틀을 먹는다 Orange Red Green Yellow Purple.

편집 -24 바이트를 줄이는 데 도움을 준 Flp.Tkc 덕분에 !

입력- 
ygro goppr rppog rppog 난교

출력- 
ygro goppr rppog rppog 난교
ygr goppr rppog rppog 난교
ygr g ppr rppog rppog 난교
ygr g ppr rpp g rppog 난교
ygr g ppr rpp g rpp g 난교
ygr g ppr rpp g rpp g rgy
yg g ppr rpp g rpp g rgy
yg g pp rpp g rpp g rgy
yg g pp pp g rpp g rgy
yg g pp pp g pp g rgy
yg g pp pp g pp g gy
yg pp pp g pp g gy
y pp pp g pp g gy
y pp pp pp g gy
y pp pp pp gy
y pp pp pp y
        pp pp pp y
        pp pp pp  

나는 그것이 매우 단순 해 보이기 때문에 더 골프를 칠 수 있다고 생각합니다.


2
이것이 한 번에 한 가지 색을 모두 먹는 것처럼 보이지만 한 번에 한 가지만 먹어야합니다
wnnmaw

1
또한, 당신이 둥지 목록으로 입력을 복용하지만, 문자열을 생산하고, 코드 등의 입력과 출력 모두가 같은 형식 수정하십시오
wnnmaw

@wnnmaw 변경되었습니다. 나는 그것이 지금
좋기를 바랍니다

1
나는 짧은 솔루션은 이미 알고,하지만 당신은 골프 그것 같이 더 많은 뭔가를 할 수있는이 알고리즘에 머물고 .
FlipTack

3
나는 당신이 이끄는 주문을 어떻게 구체적으로 선택했는지 좋아합니다 orgy.
Nic Hartley

2

Vim 57 55 바이트

줄 구분자를 제거하여 2 바이트 저장 불행히도 정확성을 읽고 확인하기가 훨씬 어렵습니다.

:set ws!
yGP/o
qqnr G9kyGGp@qq@q/y
@q/p
@q/g
@qdG

인쇄 할 수없는 항목 :

:set ws!
yGP^O/o
^Oqq^Hnr G9kyGGp@qq@q/y
^O@q/p
^O@q/g
^O@qdG

TryItOnline

순서에 대한 모든 r을 남겨두고 순서 oypg로 먹습니다. :)


1

수학, 67 바이트

Most[#/.(i=0;#:>"."/;i++≤0&/@Characters@"ryop")&~FixedPointList~#]&

빨강, 노랑, 오렌지, 자주색을 먹습니다.


소년 나는 이것에 대한 빌트인이없는 것이 기쁘다
wnnmaw

1

자바 7, 125 바이트

보라색, 노란색, 녹색, 빨간색, 주황색. 이 솔루션에서 주문을 선택하는 것을 즐기고 있습니다. :디

골프

String s(String p){String r=p;for(String c:"pygr".split(""))for(;p.contains(c);r+="\n\n"+p)p=p.replaceFirst(c," ");return r;}

언 골프

String s(String p) {
    String r=p;
    for (String c : "pygo".split("")) {
        for (; p.contains(c); r += "\n\n" + p) {
            p = p.replaceFirst(c, " ");
        }
    }
    return r;
}

여기 사용해보십시오!

@Poke의 다른 Java 답변에 대한 다른 접근 방식. 우리는 원래 문자열의 사본을 만드는 것으로 시작합니다. 각 색상을 반복하면서 공간이 발견 될 때마다 색상을 바꾸고 출력 문자열에 새 레이아웃을 추가하여 주황색 이외의 모든 것을 먹은 후에 돌아옵니다.

노트

단계 사이의 분리는 이중 줄 바꿈으로 수행 \n\n되지만 끝에 새 줄 바꿈을 사용하여 입력 그리드를 가져올 수 있으면 바로 줄어 듭니다 \n.


1

하스켈, 60 바이트

f x|(a,b:c)<-span(<maximum x)x,b>'g'=(:)<*>f$a++' ':c|1<2=[]

입력은 행이로 구분되는 단일 문자열입니다 ,. 리턴 값은 모든 중간 단계가 포함 된 문자열 목록입니다. 순서는 알파벳순이며 가장 큰 것이므로 녹색이 남아 있습니다. 사용 예 :

*Main> mapM_ putStrLn $ f " org ,prgrg,gggpr,oyyor, r p "
 org ,prgrg,gggpr,o yor, r p 
 org ,prgrg,gggpr,o  or, r p 
 o g ,prgrg,gggpr,o  or, r p 
 o g ,p grg,gggpr,o  or, r p 
 o g ,p g g,gggpr,o  or, r p 
 o g ,p g g,gggp ,o  or, r p 
 o g ,p g g,gggp ,o  o , r p 
 o g ,p g g,gggp ,o  o ,   p 
 o g ,  g g,gggp ,o  o ,   p 
 o g ,  g g,ggg  ,o  o ,   p 
 o g ,  g g,ggg  ,o  o ,     
   g ,  g g,ggg  ,o  o ,     
   g ,  g g,ggg  ,   o ,     
   g ,  g g,ggg  ,     ,     

간단한 재귀. 리턴 값을 위해 입력 목록을 저장하고 가장 큰 요소를 g공백으로 바꾸고 함수를 다시 호출하십시오. 기본 사례는 제거 할 요소가없는 경우입니다.


1

MATL, 24 바이트

`tDX:t2#X>wx32w(10etun2>

온라인으로 사용해보십시오! 나는 알파벳 순으로 스키 틀을 먹는 것을 선호한다. 녹색은 내가 가장 좋아하는 색이다. 설명:

                           % Take input implicitly.
`                          % Start do ... while loop
 tD                        % Duplicate skittle pile (nom!), but give away for display
   X:                      % Put skittles in long row (like normal people do)
     t2#X>                 % Get least favourite skittle name and number in the row
          wx               % Discard the skittle name
            32w            % Put an eaten skittle on the stack (ASCII 32)
               (           % Put the eaten skittle back in the row of skittles.
                10e        % Shape the row back into a 10x10 array
                   tun     % Check the number of unique skittles
                      2>   % Loop while this number >2 (eaten skittles + favourite skittles)
                           % Implicit end of do... while loop. 
                           % Display last iteration implicitly, since it's still on the stack.

0

Q 기본, 125 바이트

창조적 규칙 남용!

DATA 71,89,82,79
?INPUT$(109)
DO
READ s
FOR r=1TO 10
FOR c=1TO 10
IF s=SCREEN(r,c)THEN SLEEP 1:LOCATE r,c:?" "
NEXT
NEXT
LOOP

이 제출은 많은 것들이 괜찮다고 가정합니다.

  • 입력 및 출력은 대문자입니다 ( GORPY)
  • 입력은 109 개의 연속 키 누르기로 이루어지며, 마지막 키를 입력 할 때까지 화면에 에코되지 않습니다. 마지막 행을 제외한 각 행의 끝에서 사용자는 캐리지 리턴을 입력해야합니다.
  • 스키 틀즈 파일을 여러 번 인쇄하는 대신 프로그램은 각 단계 전에 1 초 동안 일시 정지 한 상태로 화면에 표시합니다. (QBasic에는 출력 스크롤 백이 없으므로 파일을 여러 번 인쇄하면 마지막 2 1/2 단계 만 제공됩니다. 또한이 방법을 사용하면 스키 틀 파일 더미가 음식을 먹을 때 어떻게 진화하는지 훨씬 더 잘 묘사 할 수 있습니다.)
  • 프로그램이 오류와 함께 종료됩니다.

또한 소문자를 사용하고 오류가없는 130 바이트 버전이 있습니다.

다음은 QB64 에서 샘플 실행이며 5x5 그리드 로 109변경되었습니다 29.

가장자리 잘라 내고 먹는

설명

DATA 71,89,82,79의 ASCII 코드 저장 G, Y, R,와 O.

?INPUT$(109) 사용자로부터 109 개의 키를 누르고 인쇄합니다.

그런 다음 무한한 DO ... LOOP구조 로 들어갑니다 . 매번 READ현재 Skittle의 ASCII 코드는로 입력됩니다 s. 그런 다음 1과 10 사이의 행과 열을 반복합니다. SCREEN(r,c)r의 열에 있는 화면에서 문자의 ASCII 코드를 가져옵니다 c. 이것은 현재 주희 같은 경우 s, 우리는 SLEEP일초에 대한 다음의 공백을 인쇄 r, c.

메인 루프는 네 번 실행되어 녹색, 노란색, 빨간색 및 주황색 스키 틀을 제거합니다. 다섯 번째 반복에서는 READ데이터가 없기 때문에 오류가 발생합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.