ใช้โปรแกรมที่เชื่อมโยงสองโปรแกรมส่งออกหมายเลขลำดับสูงสุด n


19

... เลขลำดับ (หรือเลขลำดับ) เป็นคำที่แสดงถึงตำแหน่งหรือลำดับในลำดับ

ป้อนคำอธิบายรูปภาพที่นี่

จากวิกิพีเดีย

งานของคุณคือการใช้โปรแกรมแยก 2 (ซึ่งสามารถทำจาก 2 ภาษาที่แตกต่างกัน) nthเพื่อการส่งออกลำดับลำดับจากครั้งแรก คุณจะได้รับการแสดงผลคำเต็มเมื่อเทียบกับsecond2nd

ความท้าทายของเลขลำดับได้นำมาก่อนโดยเฉพาะในรายการนี้ ในการท้าทายนี้ ordinals เป็นเพียงยานพาหนะเพื่ออำนวยความสะดวกในเงื่อนไขที่ไม่ซ้ำกันรายละเอียดด้านล่าง


ส่วนที่ 1

คุณต้องทำให้โปรแกรมที่เมื่อได้รับการป้อนข้อมูลของที่nต้องส่งออกอะไร
nจะเป็นจำนวนเต็มบวกที่ไม่ใช่ศูนย์เสมอไม่มากกว่า 999

เอาต์พุตที่ถูกต้องประกอบด้วย แต่ไม่ จำกัด เฉพาะ :

  • เอาต์พุตใด ๆ ไปยังstdout/ stderr/ ฯลฯ
  • การสร้างไฟล์ / โฟลเดอร์ / ฯลฯ
  • ส่วนต่อประสานกราฟิกหรือภาพทุกชนิด

อะไรจะไป


ส่วนที่ 2

คุณต้องสร้างโปรแกรมที่ใช้เอาต์พุตของโปรแกรมของส่วนที่ 1 เพื่อส่งออกหมายเลขลำดับโดยเริ่มต้นจาก 1 (แรก) จนถึงส่วนใด ๆ ที่nถูกแยกวิเคราะห์ในส่วนที่ 1

เงื่อนไขทั่วไป:

  • ไบต์รวมสำหรับส่วนที่ 2 ต้องไม่เกินไบต์ทั้งหมดสำหรับส่วนที่ 1 (น้อยกว่าหรือเท่ากับ)

เงื่อนไขการส่งออก:

  • ไม่ต้องตรงตามตัวพิมพ์ใหญ่ - เล็ก
  • เอาต์พุตจะต้องมีลำดับตามลำดับเท่านั้น (เฉพาะอักขระ aZ) และช่องว่าง (อนุญาตให้ขึ้นบรรทัดใหม่)
  • สามารถส่งออกไปยังแหล่งใดก็ได้ตราบใดที่มันสามารถมองเห็นได้ในระหว่างหรือหลังการดำเนินการ
  • โปรแกรมไม่จำเป็นต้องยกเลิกตราบใดที่เอาต์พุตถูกต้อง
  • เอาท์พุทไม่จำเป็นต้องมีไวยากรณ์ใด ๆ แต่อาจรวมถึงมัน (ยัติภังค์, จุลภาค, "ands" ฯลฯ ) เป็นเพียงเป็นที่ยอมรับได้nine hundred ninety ninthnine 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 eleventhหรือone hundred eleventh?
HyperNeutrino

3
@HyperNeutrino ผมคิดว่าความคิดที่จะพยายามที่จะแยกการทำงานระหว่างสองอย่างสม่ำเสมอเท่าที่เป็นไปได้ในขณะที่การเล่นกอล์ฟ - ถ้าฉันจะทำให้การส่งออก p1 [30, 'second']สำหรับ32แล้ว P2 32มีการทำงานน้อยที่จะทำว่าถ้ามันมีการส่งออกเพียง
Jonathan Allan

4
บางทีฉันอาจจะพลาดบางสิ่งบางอย่างที่โง่เขลา แต่จากสองรายการสุดท้ายในตัวอย่างการให้คะแนนทำไมรายการที่ 1 ถึงไม่ชนะ? ส่วนที่ 1 มีไบต์เดียวกันส่วนที่ 2 น้อยกว่าหรือเท่ากับส่วนที่ 1 สำหรับทั้งสองและรายการ 1 ส่วนที่ 2 มีไบต์น้อยกว่ารายการที่ 2 ส่วนที่ 2
Patrick Roberts

@PatrickRoberts เนื่องจากส่วนที่ 2 ต้องมีจำนวนไบต์เท่ากับหรือน้อยกว่าถึงส่วนที่ 1 เนื่องจากส่วนที่ 1 คือ 21 ไบต์ แต่ส่วนที่ 2 คือ 33 ไบต์รายการ # 1 จึงถูกตัดสิทธิ์ น่าเสียดายที่ข้อมูลนั้นซ่อนตัวอยู่และไม่ได้ระบุไว้อย่างชัดเจนในเงื่อนไขการชนะในขณะนี้
Chronocidal

@PatrickRoberts สิ่งนี้มีความสำคัญเพราะมิฉะนั้นคุณสามารถใช้ภาษาที่ส่งผ่านอินพุตโดยปริยายเมื่อมีการรันโปรแกรม 0 ไบต์สำหรับส่วนที่ 1
Chronocidal

คำตอบ:


14

Sledgehammer 0.5.1 / Sledgehammer 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


@Giuseppe แน่นอน แม้ว่าฉันจะยืนยันว่าแพ็คเกจ CRAN เป็นส่วนหนึ่งของ R และควรได้รับอนุญาตตราบใดที่เรานับจำนวนตัวอักษรที่จำเป็นในการโหลดและแนบ
Robin Ryder

ฉันเชื่อว่าฉันทามติเมตาคือการใช้ห้องสมุดภายนอกเป็นหลักถือว่าเป็น "ภาษาอื่น"; ดูตัวอย่างโพสต์นี้ซึ่งเกี่ยวกับธงคอมไพเลอร์ แต่มีหมายเหตุเกี่ยวกับไลบรารีภายนอก Python คำตอบที่นี่ให้คำแนะนำกับตัวอย่างมากมาย แต่ฉันดูเหมือนจะไม่สามารถใช้ฟังก์ชั่นการค้นหาในเมตาเพื่อหาคำสั่งที่ชัดเจน
จูเซปเป้

@Giuseppe มีต่อในการแชท: chat.stackexchange.com/transcript/message/51052875#51052875
Robin Ryder

8

ภาษา Wolfram (Mathematica) (ทั้งสองส่วน), 18 ไบต์ / 15 ไบต์

-5 / -1 ขอบคุณlirtosiast

ส่วนที่ 1, 18 ไบต์

Range@#|"Ordinal"&

ส่วนที่ 2, 15 ไบต์

IntegerName@@#&

ลองออนไลน์!

สองฟังก์ชั่นที่ส่งออกผ่านค่าตอบแทน


2
Range@#|"Ordinal"&สั้นกว่าและIntegerNamevectorizes เหนืออาร์กิวเมนต์แรก ฉันคิดว่าอาจจำเป็นต้องใช้เอาต์พุตที่คั่นด้วยช่องว่าง
lirtosiast

4

Python 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ช่วยให้คุณสี่ไบต์ในแต่ละส่วน
Khuldraeseth na'Barya

1

JavaScript (Node.js), 47 ไบต์ / 47 ไบต์

สองฟังก์ชั่นในสภาพแวดล้อม Node.js g(f(n))เดียวกันเรียกเช่น ใช้แพ็กเกจ npm เป็นคำต่อจำนวน

ส่วนที่ 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!


JavaScript (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 / เสียงกระเพื่อมสามัญ 34/26 ไบต์

Common LISP formatมีสิ่งนี้เป็นแบบในตัวเพราะแน่นอน

โปรแกรม 1 (34 ไบต์)

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

Perl ทำซ้ำทั้งหมด รหัส Common LISP ที่เทียบเท่า ( (dotimes(i(read)) ...)) ยาวกว่า Perlier นักกอล์ฟ... for 1..<>มาก Perl แสดงผลพวงของรหัสเสียงกระเพื่อม

โปรแกรม 2 (26 ไบต์)

(loop(eval(read nil nil)))

มันคือ REPL ลบ P มันอ่านอินพุตมาตรฐานและก็เรียกใช้มัน ไม่ยุติ แต่กฎบอกอย่างชัดเจนว่าไม่เป็นไร

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