오늘이 무슨 요일인가요?


34

당신은 행성 Flooptonia로가는 길에 우주 관광입니다! 비행 시간은 47,315 년이 더 걸리기 때문에 극저온으로 얼어 붙기 전에 시간을 보내기 위해 플루토 니안 달력을 이해하는 데 도움이되는 프로그램을 작성하기로 결정합니다.

다음은 208 일의 긴 Flooptonian 달력입니다.

Month       Days    Input Range
Qupu        22      [0-22)
Blinkorp    17      [22-39)
Paas        24      [39-63)
Karpasus    17      [63-80)
Floopdoor   1       [80]
Dumaflop    28      [81-109)
Lindilo     32      [109-141)
Fwup        67      [141-208)

도전

해당 연도의 정수일 (range [0-208))이 주어진 프로그램 은 해당 월의 일과 월 이름 (예 :)을 출력하는 것입니다 13 Dumaflop.

그러나 예외는 다음과 같습니다. Floopdoor는 분명히 자신의 캘린더 페이지를 가질 가치가있는 Flooptonians에게 특별한 시간입니다. 이러한 이유로 Floopdoor는 하루로 작성되지 않습니다 (예 : 출력이 Floopdoor아닌 1 Floopdoor).

테스트 사례

0   => 1 Qupu
32  => 11 Blinkorp
62  => 24 Paas
77  => 15 Karpasus
80  => Floopdoor
99  => 19 Dumaflop
128 => 20 Lindilo
207 => 67 Fwup

규칙

  • 완전한 프로그램을 작성해야합니다.
  • 입력이 항상 유효하다고 가정 할 수 있습니다.
  • 출력에 줄 바꿈 문자가있을 수 있지만 추가 문자가 없어야합니다. 사례도 제공된 예제와 일치해야합니다.
  • 날짜 / 시간 기능을 사용할 수 있습니다.
  • 코드 길이는 바이트 단위로 측정됩니다.

2
"Floopdo o r"또는 "Floopdor"입니까? 첫 번째 차트에는 extra o가 있지만 이름의 다른 인스턴스에는 없습니다.
jwodder

4
47k 년 동안 아무것도 변하지 않을까요?
Charles가 아닙니다

2
@NotthatCharles 더 나아가 행성이 멀리 떨어져 있다면, 처음에 행성을 구할 때까지 구식이 아닐까요?
SuperJedi224

3
마치 그레고리력이 충분하지 않은 것처럼.
Arturo Torres Sánchez

3
@ ArturoTorresSánchez 적어도 윤년은 없습니다. 그러나 Flooptonia에 대한 다른 이야기가 있습니까? 아니면 전체 설정 이이 특정 퍼즐만을 위해 만들어 졌습니까? Fwup은 겨울을위한 그들의 단어입니까? 아니면 그냥 꼬리를 Worldbuilding으로 다시 가져와야합니까?
Damian Yerrick

답변:


14

Pyth - (105) 103 90 88 바이트

기본 변환을 사용합니다. 이름 하나와 시작 날짜 하나, 그리고 Floopdoor의 끝에는 삼항이있는 두 개의 간단한 찾아보기 테이블.

KhfgQhTC,aCM"mQP?'"Zcs@LGjC"îºBüÏl}W\"p%åtml-¢pTÇÉ(°±`"23\c+?nQ80+-hQhKdkreK3

문자열을 기준 128이 아니라 기준 23으로 압축합니다. 먼저, 알파벳의 인덱스로 변환합니다. 이를 위해서는 구분자가 c월 이름에 표시되지 않아야합니다. 그런 다음 기본 23 숫자 (표시된 가장 높은 값)에서 10을 기본 10으로 인코딩 w한 다음 기본 256으로 변환합니다.

시작 날짜는 유니 코드 코드 포인트이며 기본 변환은 없습니다.

K                       K =
 hf                     First that matches the filter
  gQ                    >= Q
   hT                   First element of filter var
  C,                    Zip two sequences
   a       Z            Append 0 (I could save a byte here but don't want to mess with null bytes)
    CM"..."             Map the string to its codepoints
   c          \c        Split by "c"
    s                   Sum by string concatenation
     @LG                Map to location in alphabet
      j     23          Base 10 -> Base 23
      C"..."            Base 256 -> Base 10
+                       String concatenation
 ?nQ80                  Ternary if input != 80
  +-hQhK                Input - start date + 1
  k                     Else empty string
 r  3                   Capitalize first letter
  eK                    Of month name

여기에서 온라인으로 사용해보십시오 .

테스트 스위트 .


저는 Pyth를 처음 접했습니다. 분해 할 수 있습니까? 나는 매우 감사합니다.
Winny

1
@Winny 나는 단지 명백한 골프를 먼저 끝내고 싶었다. 모든 이상한 기호는 기본 26 기호 (알파벳)를 기본 256으로 압축하여 공간을 절약하기 때문입니다.
Maltysen

1
@Winny로 충분합니까? 궁금한 점이 있으면 여기 / 채팅에서 자유롭게 핑을 보내십시오 .
Maltysen

19

파이썬 3 159 156 152 151 150 148 바이트

n=int(input())+1
for c,x in zip(b" C","Qupu Blinkorp Paas Karpasus Floopdoor Dumaflop Lindilo Fwup".split()):c>=n>0and print(*[n,x][-c:]);n-=c

의 bytes 객체 zip는 인쇄 할 수없는 문자를 포함합니다.

for c,x in zip(b"\x16\x11\x18\x11\x01\x1c C", ...): ...

( for/zip-3 바이트 의 루프를 제안하는 @xnor에게 감사 합니다)


11
파이썬의 대답이 --- <s> 목으로 가다 </ s> --- 때 Pyth 답변을 꺾는 순간
Optimizer

1
바이트 스트링 사용은 독창적입니다!
Winny

나는 비슷한 대신에 대신에 b직접 반복하는 것이 가능해야한다고 생각합니다 . forfor c in b"...":i+=n>0;n-=c
xnor

1
아, 잠깐만 요, 당신 n도 추락을 멈추려 면 올바른 가치가 필요합니다 . 여전히 같은 것이 가능해야 x=n>c;n-=c*x;i+=x하지만 가치가 있는지 모릅니다.
xnor

13

Piet 2125 바이트

결코 가장 짧은 것은 아니지만 예쁘고 화려합니다 ...

각 픽셀은 손으로 직접 배치됩니다. 갈 실행하려면 여기 파이어 폭스에서 (크롬하지 않습니다 일)과 1의 CODEL 폭로드, (이것은 블랙,하지 걱정을 게재됩니다) 번호를 입력하고 실행 버튼을 누르면!

소규모 프로그램 : 작은 버전


확대 (코덱 폭 10) : 여기에 이미지 설명을 입력하십시오


dead chex바이트 수에 추가 되지 않습니까?
Beta Decay

1
@Beta 공정하게 말해서 바이트 수는 고정되어
있더라도

12

Pyth 178 156 153 147 바이트

J?<Q22,_1"Qupu"?<Q39,21"Blinkorp"?<Q63,38"Paas"?<Q80,62"Karpasus"?<Q81,k"Floopdoor"?<Q109,80"Dumaflop"?<Q141,108"Lindilo",140"Fwup"?nhJkjd,-QhJeJeJ

퍼머 링크

두 번째 골프, Pyth 피드백은 매우 도움이 될 것입니다.

설명

J                       (Auto)Assign J a tuple of the first day & month name
 ?<Q22,_1"Qupu"         Recall that Q auto-initialized to raw_input()
 ?<Q39,21"Blinkorp"     ? is ternary
 ?<Q63,38"Paas"         , is a two-pair tuple
 ?<Q80,62"Karpasus"
 ?<Q81,k"Floopdoor"     Special case handled by empty string as first day
 ?<Q109,80"Dumaflop"
 ?<Q141,108"Lindilo"
 ,140"Fwup"             Since input assumed valid, no need to test for Fwup
?nhJk                   Is day not an empty string?
jd,                     join on space
   -QhJ                 Q-(first day or -1 on first month) + 1
   eJ                   The month itself
eJ                      Else print only the month name on Floopdoor

인라인 할당을 사용하여 전체 J=...를 삼항 조건 에 넣을 수 있어야합니다 .
Maltysen

7

CJam, 98 96 93 바이트

0000000: 72 69 63 22 00 16 27 3f 50 51 6d 8d d0 22 66 2d  ric"..'?PQm.."f-
0000010: 5f 7b 30 3c 7d 23 28 5f 40 3d 29 53 40 22 06 32  _{0<}#(_@=)S@".2
0000020: 88 b2 ce d2 87 2f 1e 79 62 1b 7a 11 53 a6 cc 02  ...../.yb.z.S...
0000030: 40 c5 c6 82 d0 dd b7 4b ed ee 1c dc 4f f5 ec 67  @......K....O..g
0000040: 22 32 35 35 62 32 33 62 27 61 66 2b 27 63 2f 3d  "255b23b'af+'c/=
0000050: 5f 2c 39 3d 7b 5c 3f 7d 26 28 65 75 5c           _,9={\?}&(eu\

위 코드는 뒤집을 수있는 16 진 덤프입니다. 소스 코드에는 인쇄 할 수없는 문자가 포함되어 있기 때문입니다.

대부분의 인쇄 할 수없는 문자는 온라인 인터프리터에 문제가 없지만 첫 번째 문자열의 널 바이트는 거래 차단기입니다.

1 바이트의 비용으로 입력에 1을 추가하고 첫 번째 문자열의 각 코드 포인트에 1을 추가하여이 문제를 해결할 수 있습니다. CJam 인터프리터 에서이 버전을 사용해 볼 수 있습니다 .

브라우저에서 영구 링크가 작동하지 않으면 이 붙여 넣기 에서 코드를 복사 할 수 있습니다 .

테스트 사례

$ LANG=en_US
$ xxd -ps -r > flooptonia.cjam <<< 726963220016273f50516d8dd022662d5f7b303c7d23285f403d29534022063288b2ced2872f1e79621b7a1153a6cc0240c5c682d0ddb74bedee1cdc4ff5ec6722323535623233622761662b27632f3d5f2c393d7b5c3f7d262865755c
$ wc -c flooptonia.cjam 
96 flooptonia.cjam
$ for d in 0 32 62 77 80 99 128 207; do cjam flooptonia.cjam <<< $d; echo; done
1 Qupu
11 Blinkorp
24 Paas
15 Karpasus
Floopdoor
19 Dumaflop
20 Lindilo
67 Fwup

작동 원리

ric     e# Read a Long from STDIN and cast to Character.
"…"     e# Push the string that corresponds to [0 22 39 63 80 81 109 141 208].
f-      e# Subtract each character from the input char.
        e# Character Character - -> Long
_{0<}#  e# Find the index of the first negative integer.
(_      e# Subtract 1 from the index and push a copy.
@=)     e# Select the last non-negative integer from the array and add 1.
S@      e# Push a space and rotate the decremented index on top of it.
"…"     e# Push a string that encodes the months' names.
255b23b e# Convert from base 255 to 23.
'af+    e# Add the resulting digits to the character 'a'.
'c/     e# Split at occurrences of 'c' (used as separator).
=       e# Select the chunk that corresponds to the index.
_,9=    e# Check if its length is 9 (Floopdoor).
{\?}&   e# If so, swap and execute ternary if.
        e# Since the string " " is truthy, S Month Day ? -> Month.
(eu\    e# Shift out the first char, convert it to uppercase and swap.

5

SWI-도입부 237 232 213 바이트

a(X):-L=[22:"Qupu",39:"Blinkorp",63:"Paas",80:"Karpasus",81:"Floopdoor",109:"Dumaflop",141:"Lindilo",208:"Fwup"],nth1(I,L,A:B),X<A,J is I-1,(nth1(J,L,Z:_),Y=X-Z;Y=X),R is Y+1,(X=80,write(B);writef("%w %w",[R,B])).

여기에서 우리는 반복적으로 적용하는 프롤로그의 역 추적 메커니즘을 사용하여 nth1/3목록에 L첫 번째 요소 얻기 위해, LastDay+1:MonthNameL하는이 X < LastDay+1보유하고있다. 그런 다음 목록에서이 달 직전의 월을 찾아 해당 월의 일을 평가합니다.


5

Q, 134 146 바이트

두 번째 컷-프로그램 (146 바이트)

v:bin[l:0 22 39 63 80 81 109 141 208;x:(*)"I"$.z.x];1(,/)($)$[v=4;`;(1+x-l v)," "],`Qupu`Blinkorp`Paas`Karpasus`Floopdoor`Dumaflop`Lindilo`Fwup v;

첫 번째 컷-함수 (134 바이트)

{v:bin[l:0 22 39 63 80 81 109 141 208;x];(,/)($)$[v=4;`;(1+x-l v)," "],`Qupu`Blinkorp`Paas`Karpasus`Floopdoor`Dumaflop`Lindilo`Fwup v}

테스트

q){v:bin[l:0 22 39 63 80 81 109 141 208;x];(,/)($)$[v=4;`;(1+x-l v)," "],`Qupu`Blinkorp`Paas`Karpasus`Floopdoor`Dumaflop`Lindilo`Fwup v} each 0 32 62 77 80 99 128 207
"1 Qupu"
"11 Blinkorp"
"24 Paas"
"15 Karpasus"
"Floopdoor"
"19 Dumaflop"
"20 Lindilo"
"67 Fwup"

당신은 맞습니다-나는 함수가 아닌 전체 프로그램으로 만들기 위해 답을 편집했으며 질문 규칙에 따라 따옴표없이 stdout으로 인쇄합니다.
scottstein37

4

줄리아 231 216 184 175 바이트

r=readline()|>int
l=[141,109,81,80,63,39,22,0]
m=split("Qupu Blinkorp Paas Karpasus Floopdoor Dumaflop Lindilo Fwup")
i=findfirst(j->r>=j,l)
print(i==4?"":r-l[i]+1," ",m[9-i])

STDIN에서 행을 읽고이를 정수로 변환하고, 입력이 시작보다 크거나 같은 달 시작 날짜의 역순 목록에서 첫 번째 요소를 찾은 다음 그에 따라 인쇄합니다.


3

스위프트 1.2, 256 바이트

var d=Process.arguments[1].toInt()!,f="Floopdoor",n=[("Qupu",22),("Blinkorp",17),("Paas",24),("Karpasus",17),(f,1),("Dumaflop",28),("Lindilo",32),("Fwup",67)]
for i in 0..<n.count{let m=n[i]
if d>=m.1{d-=m.1}else{println((m.0==f ?"":"\(d+1) ")+m.0)
break}}

.swift파일에 코드를 넣고 실행하여 실행하려면swift <filename> <inputNumber>


3

자바, 357 339 바이트

가장 효율적이지는 않지만 작동 방식이 마음에 듭니다. 전체 Flooptonia 일정을 만든 다음 숫자가 어떤 날짜인지 찾습니다.

class X{public static void main(String[]q){String n[]={"Qupu","Blinkorp","Paas","Karpasus","Floopdoor","Dumaflop","Lindilo","Fwup"},l[]=new String[209];int m=0,d=0,i,b[]={0,22,39,63,80,81,109,141,208};for(i=0;i++<208;d++){l[i]=(m==4?"":d+" ")+n[m];if(i>b[m+1]){m++;d=0;}}System.out.print(l[new java.util.Scanner(System.in).nextInt()+2]);}}

입출력:

77 --> 15 Karpasus 80 --> Floopdoor

이격 및 탭 아웃 :

class X {
    public static void main(String[] q) {
        String n[] = { "Qupu", "Blinkorp", "Paas", "Karpasus", "Floopdoor", "Dumaflop", "Lindilo", "Fwup" },
          l[]=new String[209];
        int m = 0,
          d = 0,
          i,
          b[] = { 0, 22, 39, 63, 80, 81, 109, 141, 208 };
        for(i = 0; i++ < 208; d++) {
            l[i]=(m == 4 ? "" : d + " ") + n[m];
            if(i > b[m+1]){
                m++;
                d = 0;
            }
        }
        System.out.print(l[ new java.util.Scanner(System.in).nextInt() + 2 ]);
    }
}

1
나는 당신에게 도전합니다! 내 대답을 봅니다! =)
Luigi Cortese가

3

자바, 275 269 266 257 256 252 246 244 243 바이트

class X{public static void main(String[]w){int x=new Short(w[0]),i=1,a[]={-1,21,38,62,79,80,108,140,207};w="Qupu,Blinkorp,Paas,Karpasus,Floopdoor,Dumaflop,Lindilo,Fwup".split(",");while(x>a[i++]);System.out.print((i==6?"":x-a[i-=2]+" ")+w[i]);}}

형식화 :

class X {
    public static void main(String[] w) {
        int x = new Short(w[0]), 
            i = 1, 
            a[] = { -1, 21, 38, 62, 79, 80, 108, 140, 207 };
            w = "Qupu,Blinkorp,Paas,Karpasus,,Dumaflop,Lindilo,Fwup".split(",");
        while (x > a[i++]);
        System.out.print(i == 6 ? "Floopdoor" : x - a[i-=2] + " " + w[i]);
    }
}

흥미롭게도, 이것보다 몇 바이트 짧습니다.

class X {
    public static void main(String[] w) {
        int x = new Short(w[0]);
        System.out.print(x < 22 ? x + 1 + " Qupu" : x < 39 ? x - 21
                + " Blinkorp" : x < 63 ? x - 38 + " Paas" : x < 80 ? x - 62
                + " Karpasus" : x < 81 ? "Floopdoor" : x < 109 ? x - 80
                + " Dumaflop" : x < 141 ? x - 108 + " Lindilo" : x < 208 ? x
                - 140 + " Fwup" : "");
    }
}

루이지 잘 연주했습니다!
DeadChex

1
"Integer.valueOf (w [0])"대신 "new Short (w [0])"을 사용하여 6 바이트를 저장하십시오.
Olivia Trewin

@AndrewTrewin 좋은 팁, 감사합니다!
루이지 코르테스

3

자바 스크립트를 사용하여 ES6 171 164 163 바이트

나는 최고의 JavaScript 프로그래머는 아니지만 최선을 다하고 다음 코드로 끝났습니다.

f=(n)=>[0,22,39,63,80,81,109,141,208].some((e,j,a)=>n<a[j+1]&&(r=(j-4?n-e+1+' ':'')+"Qupu0Blinkorp0Paas0Karpasus0Floopdoor0Dumaflop0Lindilo0Fwup".split(0)[j]))&&r;

결과를 보려면 html 파일에서 위의 코드를 참조하고 아래 코드와 유사한 것을 사용해야합니다

<html><body><p id="o"></p><script src="Fp.js"></script><script>t=[0,32,62,77,80,99,128,207];for(i=0;i<t.length;i++)document.getElementById('o').innerHTML+=f(t[i])+'<br/>';</script></body></html>

위 코드에서 fp.js는 자바 스크립트 코드를 포함하는 파일입니다.

들여 쓰기와 HTML 및 JavaScript 코드를 결합

        f=(n)=>[0,22,39,63,80,81,109,141,208].some(
          (e,j,a)=>n<a[j+1]&&(r=(j-4?n-e+1+' ':'')+"Qupu0Blinkorp0Paas0Karpasus0Floopdoor0Dumaflop0Lindilo0Fwup".split(0)[j]))
        &&r;
        
        
        t = [0, 32, 62, 77, 80, 99, 128, 207];
        for (i = 0; i < t.length; i++) 
            document.getElementById('o').innerHTML += f(t[i]) + '<br/>';

    
<html>
<body>
    <p id="o"></p>    
</body>
</html>

편집하다:

반환 문을 제거하고 코드를 17 바이트 줄 이도록 도와 준 Vihan에게 감사의 말씀을 전합니다.

@ipi, 7 바이트 절약에 도움을 주셔서 감사합니다

참고 : ES6 화살표 기능을 사용하므로 Firefox 버전 22 이상 및 Chrome 45 이상 브라우저에서만 결과를 볼 수 있습니다.


@ vihan1086, 제안 해 주셔서 감사합니다
Anandaraj

현재 화살표 표기법을 지원하는 브라우저에 액세스 할 수 없으므로 (테스트하지 않았습니다) 월 배열을 "Qupu0Blinkorp0Paas0Karpasus0Floopdoor0Dumaflop0Lindilo0Fwup".split(0)7 바이트 로 바꾸고 저장할 수 있습니다.
Sean Latham

고마워 ipi, 나는 공백으로 나누고 있었지만 0은 2 바이트를 절약했습니다! You must write a complete program나는 이것이 단독으로 실행되어야한다고 생각합니다. prompt ()와 같은 것을 사용해야 할 수도 있습니다.
Vartan

@ipi, 귀하의 의견에 감사드립니다
Anandaraj

@ Vartan, 귀하의 답변 덕분에 1 바이트를 절약했습니다
Anandaraj

2

파이썬 2, 168 바이트

n=input();e=[-1,21,38,62,80,108,140,207];m=1
while n>e[m]:m+=1
print[`n-e[m-1]`+' '+'Qupu Blinkorp Paas Karpasus Dumaflop Lindilo Fwup'.split()[m-1],'Floopdoor'][n==80]

이것은 80내부적으로 일을 로 취급 18 Karpasus하지만 인쇄 호출시 무시합니다. 또한 Python 2의 input()기능 (과 반대 raw_input())이 편리했습니다.


2

펄 5, 140

다음을 통해 실행해야합니다 perl -E.

$i=<>+1;$i-=$b=(22,17,24,17,1,28,32,67)[$c++]while$i>0;say$b>1&&$i+$b.$",(x,Qupu,Blinkorp,Paas,Karpasus,Floopdoor,Dumaflop,Lindilo,Fwup)[$c]

테스트 출력 (@Dennis의 도난당한 테스트 코드) :

$for d in 0 32 62 77 80 99 128 207; do perl -E '$i=<>+1;$i-=$b=(22,17,24,17,1,28,32,67)[$c++]while$i>0;say$b>1&&$i+$b.$",(x,Qupu,Blinkorp,Paas,Karpasus,Floopdoor,Dumaflop,Lindilo,Fwup)[$c]' <<< $d; echo; done
1 Qupu

11 Blinkorp

24 Paas

15 Karpasus

Floopdoor

19 Dumaflop

20 Lindilo

67 Fwup

2

하스켈, 171 167 바이트

main=interact$f.read
f 80="Floopdoor"
f n=(g=<<zip[22,17,24,18,28,32,67](words"Qupu Blinkorp Paas Karpasus Dumaflop Lindilo Fwup"))!!n
g(n,s)=map((++' ':s).show)[1..n]

프로그램은 stdin에서 입력을 읽으며 NL로 끝나서는 안됩니다. EOF / ^ D로 입력을 종료하거나 다음과 같이 사용하십시오 echo -n 80 | ./what-day-is-it. 일부 echo-n스위치를 이해하지 못하고 기본적으로 NL을 생략합니다.

작동 방법 : main기능, 입력을 읽는로 변환을 Integer하고 전화 f리터럴을 반환 Floopdoor의 입력의 경우 80나, 즉 모든 가능한 날짜의 목록 축적 ["1 Qupu", "2 Qupu", ... "1 Blinkorp", ... "67 Fwup"]가 집어 들고있는 n번째 요소입니다. 나는 Karpasus하루 더 길어집니다. 18 Karpasus위치 에 있으며 목록 80에서 누락 된 부분 Floopdoor을 수정합니다 .

편집 : @MtnViewMark는 18 Karpasus트릭에 대한 아이디어를 가지고 4 바이트를 절약했습니다.


Karpasus가 18 일 동안 가장하여 제거 ,1하고`x`를 입력 하여 4 바이트를 절약 할 수 있다고 생각합니다 .80은 패턴 일치에 의해 잡히기 때문입니다.
MtnViewMark

@MtnViewMark : 매우 영리합니다. 고마워
nimi

1

스위프트 2.0, 220 바이트

영리한 것은 없으며 튜플 모음에서 필터링하면됩니다.

func d(n:Int)->String{return n==80 ?"Floopdoor":[("Qupu",21,0),("Blinkorp",38,22),("Paas",62,39),("Karpasus",79,63),("Dumaflop",108,81),("Lindilo",140,109),("Fwup",208,141)].filter{$0.1>=n}.map{"\($0.0) \(n-$0.2+1)"}[0]}

버그 수정을 위해 수정, 공백 제거


5
"완전한 프로그램을 작성해야합니다." 따라서 함수가 될 수 없습니다.
Alex A.

1

JavaScript (Node.js의 ES6), 196 바이트

하나의 명령 행 인수를 사용합니다.

a=+process.argv[2];for(d of['22Qupu','17Blinkorp','24Paas','17Karpasus','01Floopdoor','28Dumaflop','32Lindilo','67Fwup']){if(a<(z=parseInt(d)))return console.log((z>1?a+1+' ':'')+d.slice(2));a-=z}

데모

process.argv브라우저에 명령 행 인수 ( ) 가 없으므로 스 니펫의 코드가 인수를 허용하는 함수에 배치되었습니다.

// Snippet stuff
console.log = function(x){O.innerHTML += x + '\n'};

// Flooptonia function
function flooptonia(a) {
  a = +a;
  for (d in y=['22Qupu', '17Blinkorp', '24Paas', '17Karpasus', '01Floopdoor', '28Dumaflop', '32Lindilo', '67Fwup']) {
    if (a < (z = parseInt(y[d]))) return console.log((z > 1 ? a + 1 + ' ' : '') + y[d].slice(2));
    a -= z
  }
}

// Test
['0', '32', '62', '77', '80', '99', '128', '207'].map(flooptonia);
Test values: [0, 32, 62, 77, 80, 99, 128, 207]

<pre id=O></pre>


1

스위프트 2.0 215 204

let(n,t)=(Int(readLine()!)!,[(141,"Fwup"),(109,"Lindilo"),(81,"Dumaflop"),(63,"Karpasus"),(39,"Paas"),(22,"Blinkorp"),(0,"Qupu")])
print({(n==80 ?"Floopdoor":"\(n-$0.0+1) "+$0.1)}(t[t.indexOf{$0.0<=n}!]))

이것은 사용자에게 STDIN에 숫자를 입력하도록 요청하는 전체 프로그램입니다.


1

Matlab, 187 바이트

d=input('');l=[141 109 81 80 63 39 22 0];t=find(d>=l,1);m=strsplit('Fwup Lindilo Dumaflop Floopdoor Karpasus Paas Blinkorp Qupu');f='%d %s';if t==4;f='%d\b%s';end;fprintf(f,d-l(t)+1,m{t})

확장 버전 :

d=input('');
l=[141 109 81 80 63 39 22 0];
t=find(d>=l,1);
m=strsplit('Fwup Lindilo Dumaflop Floopdoor Karpasus Paas Blinkorp Qupu');
f='%d %s';
if t==4;
    f='%d\b%s';
end
fprintf(f,d-l(t)+1,m{t})

콘솔에서 줄을 읽고 ( stdin) 입력이 배열 요소보다 크거나 같은 달 시작일의 역순 목록의 첫 번째 요소를 찾은 다음 그에 따라 인쇄합니다.

이는 Julia디스플레이 단계를 제외하고 는 답변 과 거의 동일합니다 . ( 우리는 Matlab에서 사용할 수없는 삼항 연산자를 이길 수 없습니다 ). 전체 if진술 을 명시 적으로 표현하기 위해 , 우리는 작은 요령 ( Backspace인쇄 형식 의 문자)을 사용하여 특별한 요일 / 월의 숫자 1을 "지 웁니다"Floopdoor


Matlab 및 Octave 채팅 참가자 협력합니다 .


1

168 바이트를 사용하는 Javascript ES5

m=[-1,21,38,62,79,80,108,140];for(n=prompt(i=0);n>m[i+1]&&i++<8;);alert((i-4?n-m[i]+" ":"")+"Qupu0Blinkorp0Paas0Karpasus0Floopdoor0Dumaflop0Lindilo0Fwup".split(0)[i])

언 골프 드 :

m=[-1,21,38,62,79,80,108,140];   // create range of starting indexes - 1

for(                             // begin for loop
  n=prompt(i=0);                 // initialize i to zero and prompt user
  n>m[i+1] && i++ < 8;           // exit if n>0; increment i; exit if i was < 8
  );                             // end for loop

alert(
  (i-4 ? n-m[i]+" ":"") + // special floopdoor case
  "Qupu0Blinkorp0Paas0Karpasus0Floopdoor0Dumaflop0Lindilo0Fwup".split(0)[i]);

  //^  create an array of strings by splitting at zero. Then, select element i

0

C, 241 바이트

너무 흥미로운 것은 없습니다. 완전한 프로그램이어야한다면 27 바이트를 줄일 수있었습니다.

main(c,s)char**s;{c=atoi(s[1]);c-80?printf("%d ",c<22?c+1:c<39?c-21:c<63?c-38:c<80?c-62:c<109?c-80:c<141?c-108:c-140):0;puts(c<22?"Qupu":c<39?"Blinkorp":c<63?"Paas":c<80?"Karpasus":c<81?"Floopdoor":c<109?"Dumaflop":c<141?"Lindilo":"Fwup");}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.