두 개의 링크 된 프로그램을 사용하여 서수를 최대 n까지 출력


19

... 숫자 (또는 서수)는 위치 또는 순위를 순차적으로 나타내는 단어입니다.

여기에 이미지 설명을 입력하십시오

에서 위키 백과 .

당신의 임무는 2 개의 개별 프로그램 (2 개의 다른 언어로 만들 수 있음)을 사용하여 서수 순서를 처음부터로 출력하는 것 nth입니다. second와는 반대로 전체 단어 를 출력하게 됩니다 2nd.

서수의 도전은 특히이 항목 에서 이전에 제기되었다 . 이 과제에서 서수는 아래에 설명 된 고유 한 조건을 용이하게하는 수단 일뿐입니다.


1 부

입력이 주어지면 아무것도n 출력 해야하는 프로그램을 만들어야 합니다 . 항상 999보다 크지 않은 양의 0이 아닌 정수입니다.
n

유효한 출력에는 다음이 포함되지만 이에 국한되지 않습니다 .

  • stdout/ stderr/ 등에 출력
  • 파일 / 폴더 등 생성
  • 모든 종류의 그래픽 인터페이스 또는 이미지

무슨 일이든 상관 없습니다


2 부

파트 1의 프로그램 출력을 사용하여 1부터 시작 n하여 파트 1에서 구문 분석 된 것 까지 순서 번호를 출력하는 프로그램을 만들어야합니다 .

일반 조건 :

  • 파트 2의 총 바이트 수는 파트 1의 총 바이트 수를 초과하지 않아야합니다 (이하).

출력 조건 :

  • 대소 문자를 구분하지 않습니다.
  • 출력에는 순서 순서 (문자 aZ 만)와 공백 (줄 바꾸기 허용) 만 포함되어야합니다.
  • 실행 중 또는 실행 후에 표시되는 한 모든 소스에 출력 할 수 있습니다.
  • 출력이 올 바르면 프로그램을 종료 할 필요가 없습니다.
  • 출력에는 문법이 필요하지 않지만 선택적으로 포함 할 수 있습니다 (하이픈, 쉼표, "ands"등). nine hundred ninety ninth로 허용됩니다 nine hundred and ninety-ninth.

샘플 출력

n8은 어디에

FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH

채점

승리 조건의 계층 구조는 다음과 같습니다.

  1. 1 부에서 가장 낮은 바이트 수
  2. 2 부에서 가장 낮은 바이트 수
Entry #1 | Part 1 = 32 bytes, Part 2 = 22 bytes
Entry #2 | Part 1 = 31 bytes, part 2 = 30 bytes

Entry #2 wins - Part 1 contains 31 bytes vs 32 bytes

---

Entry #1 | Part 1 = 21 bytes, Part 2 = 33 bytes
Entry #2 | Part 1 = 80 bytes, Part 2 = 70 bytes

Entry #2 wins - Entry #1 disqualified (Part 2 contains more bytes than Part 1)

---

Entry #1 | Part 1 = 50 bytes, Part 2 = 49 bytes
Entry #2 | Part 1 = 50 bytes, Part 2 = 50 bytes

Entry #1 wins - Part 1 is equal, Part 2 contains 49 bytes vs 50 bytes

5
1 부에서 요점은 무엇입니까 (2 부에서 가장 짧은 제출로이 챌린지를 평가할 수 없었던 것처럼)? 또한 두 번째 점수 예에서 첫 번째 항목이 유효하지 않습니까 (2 부> 1 부) 그렇지 않은 경우 두 번째 항목을 이기지 않습니까? 또한 서수를 정의하기위한 공식적인 규칙 집합에 대한 링크를 최소한 갖는 것이 좋습니다. 예를 들어, 111 말하도록되어 one hundred and eleventhone hundred eleventh?
HyperNeutrino

3
내가 할 경우 P1 출력 - 나는 아이디어가 골프를하면서 균등하게로 둘 사이의 작업을 분할하는 것입니다 생각 @HyperNeutrino [30, 'second']에 대한 32이 출력이 있다면 다음 P2가 그렇게 적은 일을 가지고 그냥 32.
조나단 앨런

4
어쩌면 내가 바보 같은 것을 잃었을 수도 있지만, 점수 예의 마지막 두 항목 중 1 항목이 왜 이기지 못합니까? 파트 1은 동일한 바이트를 가지며 파트 2는 둘 다 파트 1보다 작거나 같습니다. 그리고 엔트리 1 파트 2는 엔트리 2 파트 2보다 적은 바이트를 갖습니다.
Patrick Roberts

@PatrickRoberts 파트 2는 파트 1 과 동일하거나 더 적은 바이트를 포함해야하기 때문에 파트 1은 21 바이트이지만 파트 2는 33 바이트이므로 항목 # 1은 실격 처리됩니다. 불행히도, 그 정보는 사라져 현재의 승리 조건에 명시 적으로 언급되어 있지 않습니다.
Chronocidal

@PatrickRoberts 그렇지 않으면 0 바이트 프로그램이 Part 1
Chronocidal

답변:


14

슬레지 해머 0.5.1 / 슬레지 해머 0.5.1, 10 바이트

프로그램 1 (10 바이트) :

⣘⢷⠾⣃⢖⣎⢅⡨⠱⢳

이 Wolfram 언어 기능으로 압축 해제합니다 :

{Range[#1], "Ordinal"} &

프로그램 2 (7 바이트) :

⡾⡁⢚⣷⣬⠤⣾

이 Wolfram 언어 기능으로 압축 해제합니다 :

StringRiffle[IntegerName @@ #1, " "] &

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


9

R ( english패키지 포함), 16 바이트 / 16 바이트

 1 부, 16 바이트

f=function(n)1:n

2 부, 16 바이트

english::ordinal

english불행히도 TIO에 설치되지 않은 패키지가 필요합니다 .

english::ordinal(f(22))출력 first second third fourth fifth sixth seventh eighth ninth tenth eleventh twelfth thirteenth fourteenth fifteenth sixteenth seventeenth eighteenth nineteenth twentieth twenty first twenty second.

물론, 파트 1은 훨씬 짧아 질 수 있지만 (3 바이트 seq:), 파트 2는 파트 1보다 길어야한다는 제약 조건에 위배됩니다.


@ 주세페. CRAN 패키지는 R의 일부라고 주장하지만,로드하고 첨부하는 데 필요한 문자를 세는 한 허용해야합니다.
로빈 라이더

메타 합의는 외부 라이브러리를 사용하는 것이 본질적으로 "다른 언어"로 간주된다고 생각합니다. 예를 들어 볼 이 게시물 컴파일러 플래그에 대해이지만, 파이썬 외부 라이브러리에 대한 메모가 있습니다. 여기대한 답변 은 많은 예제와 함께 유익하지만 메타에서 검색 기능을 사용하여 결정적인 진술을 찾을 수없는 것 같습니다.
주세페



4

파이썬 3 (1 부 및 2 부)

불행히도 Nodebox는 매우 장엄합니다 ... 골프 할 여지가 많지 않습니다.

1 부 76 바이트

for  i  in  range  (  1 ,  int  (  input  (  ) ) + 1 ) : print ( i ,end=" ")

2 부 ( NodeBox 라이브러리 사용) 76 바이트

import en.number as n
for i in input().split():print(n.ordinal(n.spoken(i)))

5
귀하의 답변은 유효해야합니다. 이 경우 파트 2가 파트 1보다 길어서 유효하지 않습니다. 답변을 "비경쟁"으로 표시하고 유효하지 않은 제출을 제출할 수 없습니다. "경쟁이 아닌"레이블은 일반적으로 허용되지 않았지만 흥미로운 제출을 위해 "경쟁이 아닌"상태에서는 허용되는 도전 과제를 게시 한 언어 또는 언어 버전으로 제출 된 도전에 대해 사용되지 않는 레이블입니다.
HyperNeutrino

1
@HyperNeutrino 죄송합니다. 규칙 1이 파트 2보다 짧아야한다고 생각했습니다.이 문제를 해결하기 위해 라이브러리를 사용했기 때문에 이것을 경쟁이 아닌 것으로 표시했습니다.
A̲̲

2
기술적으로 외부 라이브러리를 사용하는 것이 좋습니다
Jono 2906

1
import en.number as n각 부분에서 4 바이트를 절약합니다.
Khuldraeseth na'Barya

1

JavaScript (Node.js), 47 바이트 / 47 바이트

같은 Node.js 환경에서 두 개의 함수가 호출되었습니다 g(f(n)). npm 패키지 number-to-words를 사용 합니다.

1 부, 47 바이트 (40 바이트 + 7 공백)

n=>H=>{for(i=0;i<n;)console.log(H(++i))}       

2 부, 47 바이트

F=>F(require("number-to-words").toWordsOrdinal)

Runkit에서 사용해보십시오!


자바 스크립트 (Node.js), 48 바이트 / 43 바이트

1 부, 48 바이트

n=>[n,require("number-to-words").toWordsOrdinal]

2 부, 43 바이트

([n,F])=>{for(i=0;i<n;)console.log(F(++i))}

Runkit에서 사용해보십시오!


1

Perl 5.10 / Common Lisp, 34/26 바이트

커먼 리스프 format 에는 물론 내장 기능이 있습니다.

프로그램 1 (34 바이트)

say"(format t\"~:r \"$_)"for 1..<>

펄은 모든 반복 작업을 수행합니다. 동등한 Common Lisp 코드 ( (dotimes(i(read)) ...))가 훨씬 더 많은 골퍼 펄보다 길다... for 1..<> . Perl은 많은 공통 Lisp 코드를 출력합니다.

프로그램 2 (26 바이트)

(loop(eval(read nil nil)))

P를 뺀 REPL입니다. 표준 입력을 읽고 잘 실행합니다. 종료되지는 않지만 규칙은 분명히 괜찮습니다.

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