ลำดับการมองและพูดอย่างไม่มีจุด


11

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

ตัวอย่างเช่น:

$ ./LAS
8
[1,11,21,1211,111221,312211,13112221,1113213211]

วิธีที่แน่นอนที่คุณส่งออกรายการนั้นไม่สำคัญตราบใดที่ผู้ใช้สามารถเห็นตัวเลขต่าง ๆ ของลำดับได้อย่างชัดเจน นี่คือการจับแม้ว่า คุณไม่สามารถใช้ตัวแปรที่ผู้ใช้กำหนดเองได้

ตัวอย่างเช่น:

  1. ไม่มีตัวแปรรวมถึงตัวแปรที่กำหนดขอบเขต
  2. เมื่อคุณมีฟังก์ชั่นพวกเขาไม่สามารถมีชื่อ (ข้อยกเว้นหากภาษาของคุณต้องการฟังก์ชั่นหลักหรือคล้ายกับงานคุณอาจมีฟังก์ชั่นนั้น)
  3. เมื่อคุณมีฟังก์ชั่นพวกเขาไม่สามารถมีชื่ออาร์กิวเมนต์

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


1
"EXTREME POINT FREENESS" คืออะไร
Justin

1
@Quincunx ฉันต้องค้นหามัน: stackoverflow.com/questions/944446/…
Digital Trauma

คุณสามารถอธิบายกฎนี้: When you have functions, they can not have named arguments.?
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳


3
@ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ ในหลายภาษา (เช่นภาษา J หรือภาษาสแต็ค / ภาษาพื้นฐานเช่นออกมาหรือคำลงท้าย) ฟังก์ชั่นไม่ได้มีข้อโต้แย้ง; มันใช้กับบริบทภายนอกบางอย่าง (สแต็กหรืออาร์กิวเมนต์ที่มาจากขอบเขตภายนอก)
โทมัสบารูเชล

คำตอบ:


6

GolfScript (31 ตัวอักษร)

~[]\{[1\{.2$={;\)}1if\}*].n@}*;

ที่ดัดแปลงมาจากคำตอบของฉันกับคำถามดูและพูดก่อนหน้านี้ อันนี้มีข้อ จำกัด น้อยกว่าสำหรับภาษาที่ใช้งานได้ซึ่งช่วยให้ประหยัดได้ 5 ตัวอักษร แต่เนื่องจากส่วนใหญ่คำตอบของคำถามก่อนหน้านี้ไม่สามารถปรับได้ เพื่อปิดมันเป็นล่อลวง


11

Haskell 206 Chars

import Data.List
import Control.Applicative
import Data.Function
main= readLn >>= print .(flip take (map read $ fix (("1":). map (concat .(map ((++)<$>(show . length)<*>((:[]). head))). group))::[Integer]))

มันทำงานโดยใช้ฟังก์ชั่นกลุ่มเพื่อจัดกลุ่มพวกเขาเป็นกลุ่มของสิ่งที่เท่าเทียมกัน จากนั้นจะใช้แอพพลิเคชั่นที่มีฟังก์ชั่นในการสร้างฟังก์ชั่นที่อ่านความยาวได้พร้อมกันและผนวกเข้ากับหนึ่งองค์ประกอบ มันใช้การแก้ไขและแผนที่เพื่อสร้างคำจำกัดความซ้ำ (จุดฟรี) และมีไปเลย


10

J (42 ตัวอักษร)

การเขียนโปรแกรมแบบไม่มีจุด (เรียกอีกอย่างว่าเงียบ) นั้นเป็นเรื่องธรรมดาใน J

,@:((#,{.);.1~(1,}.~:}:))&.>^:(<`((<1)"_))

นั่นคือฟังก์ชั่นในการใช้งานคุณเขียนรหัสเว้นวรรคและหมายเลขอินพุต ตัวอย่างเช่น,

   ,@:((#,{.);.1~(1,}.~:}:))&.>^:(<`((<1)"_)) 8
┌─┬───┬───┬───────┬───────────┬───────────┬───────────────┬───────────────────┐
│1│1 1│2 1│1 2 1 1│1 1 1 2 2 1│3 1 2 2 1 1│1 3 1 1 2 2 2 1│1 1 1 3 2 1 3 2 1 1│
└─┴───┴───┴───────┴───────────┴───────────┴───────────────┴───────────────────┘

สังเกตเห็นกล่องสวยในผลลัพธ์

ภาคผนวก : ต่อไปนี้เป็น "กลโกง" สองสามอย่างที่ฉันรู้สึกอายเกินกว่าจะใช้ในตอนแรก แต่ตอนนี้ฉันเห็นคนอื่นใช้มันก่อน ...

  • ต่อไปนี้เป็นรุ่นถ่าน 36 ตัวที่มี "แผนการโทรที่แตกต่าง": แทนที่ 8 ด้วยจำนวนคำที่คุณต้องการ

    ,@:((#,{.);.1~(1,}.~:}:))&.>^:(<8)<1
    
  • และถ้ามีเลขศูนย์พิเศษในเอาท์พุทก็โอเคนี่เป็นรุ่นถ่าน 32 ตัว:

    ,@:((#,{.);.1~(1,}.~:}:))^:(<8)1
    

7

GolfScript, 36 ตัวอักษร

~([1]\{.[0\{.2$=!{0\.}*;\)\}/](;}*]`

ตัวแปรนั้นไม่ค่อยถูกใช้ใน GolfScript และงานนี้ไม่ต้องการมันอย่างแน่นอน อินพุตอยู่บน stdin, ส่งออกไปยัง stdout ตัวอย่างเช่นอินพุต8ให้เอาต์พุต:

[[1] [1 1] [2 1] [1 2 1 1] [1 1 1 2 2 1] [3 1 2 2 1 1] [1 3 1 1 2 2 2 1] [1 1 1 3 2 1 3 2 1 1]]

ฉันอาจเขียนคำอธิบายโดยละเอียดของโค้ดนี้ในภายหลัง แต่อย่างน้อยคุณก็สามารถบอกได้อย่างง่ายดายว่ามันไม่ใช้ตัวแปรเนื่องจากข้อเท็จจริงที่ว่ามันไม่ได้รวมโอเปอเรเตอร์การมอบหมายตัวแปรไว้:ที่ใดก็ได้


6

Haskell, 118 chars (80 โดยไม่ต้องนำเข้า)

import Data.List
import Control.Monad
main=readLn>>=print.flip take(iterate(ap((++).show.length)(take 1)<=<group)"1")

6

Bash และ coreutils, 111 73 ตัวอักษร

eval echo 1\|`yes 'tee -a o|fold -1|uniq -c|(tr -dc 0-9;echo)|'|sed $1q`:

uniq -cกำลังทำการยกของหนักเพื่อสร้างหมายเลขถัดไปตามลำดับ yes, sedและevalสร้างจำนวนที่จำเป็นซ้ำของท่อในการประมวลผล ส่วนที่เหลือเป็นเพียงการจัดรูปแบบ

เอาต์พุตถูกวางในไฟล์ชื่อo:

$ ./looksay.sh 8
ubuntu @ ubuntu: ~ $ cat o
1
11
21
1211
111221
312211
13112221
1113213211
$ 

4

Mathematica, 65 ตัวอักษร

FromDigits/@NestList[Flatten@Reverse[Tally/@Split@#,3]&,{1},#-1]&

ตัวอย่าง:

FromDigits/@NestList[Flatten@Reverse[Tally/@Split@#,3]&,{1},#-1]&[8]

{1, 11, 21, 1211, 111221, 312211, 13112221, 1113213211}


3

J, 37 ตัวอักษร

1([:,((1,2&(~:/\))(#,{.);.1]))@[&0~i.

ขึ้นอยู่กับคำตอบของฉันคำถามแบบเมล็ดถั่ว อาจมีบางอย่างที่ทำให้สั้นลงได้ การใช้งานมีไว้สำหรับคำตอบ J อื่น ๆ :

   1([:,((1,2&(~:/\))(#,{.);.1]))@[&0~i. 7
1 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0
2 1 0 0 0 0 0 0
1 2 1 1 0 0 0 0
1 1 1 2 2 1 0 0
3 1 2 2 1 1 0 0
1 3 1 1 2 2 2 1

นอกจากนี้ยังมีปัญหาเลขศูนย์พิเศษคำตอบรูปแบบถั่วของฉันมี


อ่ามีคำถามก่อนหน้ามากกว่าหนึ่งคำถามและคำตอบเพิ่มเติมจากคำถามนั้นสามารถคัดลอกมาที่คำถามนี้ได้โดยไม่ต้องปรับแต่งเลยจากคำถามที่พบ ฉันเกือบจะเชื่อว่าการลงคะแนนเพื่อปิดเป็นคนล่อ
Peter Taylor

@PeterTaylor รูปแบบ Pea หนึ่งแตกต่างกันเล็กน้อยซึ่งคุณต้องเรียงลำดับหมายเลขในบรรทัดก่อนหน้าก่อนที่จะสร้างถัดไป
Gareth

2

Perl 6: 63 53 ตัวอักษร

say (1,*.subst(/(\d)$0*/,{.chars~.[0]},:g)...*)[^get]

สร้างรายการสันหลังยาวของลำดับ Look and Say ( 1,*.subst(/(\d)$0*/,{.chars~.[0]},:g)...*) จากนั้นรับอิลิเมนต์จำนวนมากตามที่ระบุโดยผู้ใช้ ( [^get]ซึ่งเป็นตัวห้อยอาร์เรย์และค่าเฉลี่ย[0..(get-1)]) และsayทั้งหมด

รายการสันหลังยาวทำงานโดยรับ 1 จากนั้นสร้างหมายเลขต่อเนื่องแต่ละครั้งโดยใช้หมายเลขสุดท้ายที่พบและทดแทนลำดับทั้งหมดของหลักเดียวกันตามที่จับคู่/(\d)$0*/และแทนที่ด้วย {จำนวนกี่} + {ตัวเลขใด} .chars~.[0]หรือ

ตัวแปรเดียวในรหัสนี้คือ$0การจับคู่ครั้งแรกของการจับคู่และ$_ตัวแปรเฉพาะที่เฉพาะเจาะจงที่การ.methodเรียกใช้แบบไม่เปิดเผยและไม่มีการกำหนดโดยผู้ใช้


1

GolfScript, 57 43 ตัวอักษร

แนวทางของฉันเอง จบลงด้วยความยาวกว่าเดิมที่มีอยู่อย่างน่าเศร้า =.

~[1 9]{.);p[{...1<^0=?.@(\@(>.,(}do 0=]}@*;

ตัวอย่างเอาต์พุตสำหรับ stdin ของ8:

[1]
[1 1]
[2 1]
[1 2 1 1]
[1 1 1 2 2 1]
[3 1 2 2 1 1]
[1 3 1 1 2 2 2 1]
[1 1 1 3 2 1 3 2 1 1]

เลือกเวอร์ชั่นที่ไม่มี9Sentinel แต่ยาวกว่า 47 ตัวอักษร ฉันสงสัยว่ามันมีศักยภาพมากกว่า:

~[1]{.p[{...1<^.{0=?.@(\@(>1}{;,\0=0}if}do]}@*;

1

สกาล่า 178

(0 to Console.in.readLine.toInt).map(i=>Function.chain(List.fill[String=>String](i)(y=>(('0',0,"")/:(y+" ")){case((a,b,c),d)=>if(d==a)(a,b+1,c)else(d,1,c+b+a)}._3.drop(2)))("1"))

1
ฉันค่อนข้างแน่ใจว่าiในi=>นั้นเป็นตัวแปร
Peter Taylor

1

Dyalog APL, 35 ตัวอักษร

(⊢,⊂∘∊∘((≢,⊃)¨⊃⊂⍨2≢/0,⊃)∘⌽)⍣(⎕-1)⊢1

ถูกประเมินอินพุต ในลิงค์ที่ฉันแทนที่ด้วย 8 เนื่องจาก tryapl.org ไม่อนุญาตให้ป้อนข้อมูลของผู้ใช้

ไม่มีตัวแปรที่มีชื่อ ( a←1), ไม่มีฟังก์ชั่นที่มีชื่อ ( f←{}), ไม่มีอาร์กิวเมนต์ ( , )

องค์ประกอบของฟังก์ชั่นเท่านั้น:

  • ผู้ประกอบการ monadic— แต่ละ: , ลด: f/, การเดินทาง:f⍨
  • ตัวดำเนินการ dyadic— กำลัง: f⍣nเขียน:f∘g
  • ส้อม - (f g h)B ←→ (f B)g(h B);A(f g h)B ←→ (A f B)g(A h B)
  • บน(f g)B ←→ f(g B)-A(f g)B ←→ f(A g B)
  • 4-Trains (fork-atops) -(f g h k) ←→ (f (g h k))

ฟังก์ชั่นดั้งเดิมที่ใช้:

  • ขวา:A⊢B ←→ B
  • ย้อนกลับ:⌽B
  • ครั้งแรก:⊃B
  • concatenate:A,B
  • ไม่ตรงกัน: A≢B, นับ:≢B
  • ล้อมรอบ: ⊂B, พาร์ติชัน:A⊂B
  • เรียบ:∊B

ใน tryapl.org หากคุณลบส่วนท้าย⊢1ซึ่งเป็นข้อโต้แย้งของสิ่งที่ยิ่งใหญ่นี้คุณสามารถดูไดอะแกรมของวิธีการแยกวิเคราะห์:

     ⍣               
   ┌─┴─┐             
 ┌─┼─┐ 7             
 ⊢ , ∘               
    ┌┴┐              
    ∘ ⌽              
 ┌──┴───┐            
 ∘    ┌─┴─┐          
┌┴┐   ¨ ┌─┼───┐      
⊂ ∊ ┌─┘ ⊃ ⍨ ┌─┼───┐  
  ┌─┼─┐ ┌─┘ 2 / ┌─┼─┐
  ≢ , ⊃ ⊂   ┌─┘ 0 , ⊃
            ≢

0

J 66 (ด้วย I / O)

".@(_5}&',@((#,&:":{.);.1~1&(0})&(~:_1|.]))^:(<X)":1')@{.&.stdin''

ไม่มี IO, คะแนน 43:

NB. change the 8 for the number of numbers you'd want
,@((#,&:":{.);.1~1&(0})&(~:_1|.]))^:(<8)'1'

คำถามที่ตลกที่จะโพสท่าด้วยตัวคุณเองเมื่อไร 9 คนแรกที่ปรากฏตัว?


อย่าดูที่หน้าลำดับเลขจำนวนเต็ม
PyRulez

โอเคฉันเข้าใจแล้ว ถ้าอย่างนั้นทำไม?
jpjacobs


เคล็ดลับที่ดีในรุ่น IO ของการแทนที่ X โดยอินพุตในสตริงและจากนั้นเรียก eval!
โอมา

สำหรับคำถามที่ตลก: มันค่อนข้างชัดเจนว่าคุณมี 1, 2 และ 3 หรือไม่? ฉันหมายถึงการได้ 4 หรือสูงกว่าในขั้นตอนก่อนหน้าคุณต้องมีตัวเลขสี่หลักติดต่อกัน xaaaay แต่นั่นไม่สามารถเกิดขึ้นได้เนื่องจากคุณกำลังพูดถึงขั้นตอนต่อไปก่อนหน้านี้ที่คุณเห็น "x a's a a" หรือ "a's, a's"
โอมา
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.