Trình tự nhìn và nói không có điểm


11

Bạn cũng tạo ra một chương trình lấy một số nguyên làm đầu vào và đầu ra đầu tiên cho dù số đó là của chuỗi nhìn và nói .

Ví dụ:

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

Cách chính xác bạn xuất danh sách là không quan trọng, miễn là người dùng có thể thấy rõ các số khác nhau của chuỗi. Đây là bắt mặc dù. Bạn không thể sử dụng bất kỳ loại biến do người dùng xác định.

Ví dụ:

  1. Không có biến, bao gồm các biến có phạm vi.
  2. Khi bạn có chức năng, chúng không thể có tên. (Ngoại lệ, nếu ngôn ngữ của bạn yêu cầu chức năng chính hoặc tương tự như công việc, bạn có thể có chức năng đó.)
  3. Khi bạn có các hàm, chúng không thể có các đối số được đặt tên.

Ngoài ra, bạn không được sử dụng thư viện với các khả năng cụ thể liên quan đến trình tự nhìn và nói, và bạn không thể truy cập mạng hoặc cung cấp cho chương trình của bạn bất kỳ tệp nào (mặc dù nó có thể tạo và sử dụng riêng.) Đây là mã golf, mã ngắn nhất trong các ký tự sẽ thắng!


1
"TUYỆT VỜI ĐIỂM TUYỆT VỜI" là gì?
Justin

1
@Quincunx Tôi đã phải tìm kiếm nó: stackoverflow.com/questions/944446/
Chấn thương kỹ thuật số

Bạn có thể giải thích quy tắc này : When you have functions, they can not have named arguments.?
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳


3
@ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ Trong một số ngôn ngữ (như ngôn ngữ J hoặc ngôn ngữ ngăn xếp / dựa trên như ra hoặc mô tả), các hàm không có đối số; chúng áp dụng cho một số bối cảnh bên ngoài (ngăn xếp hoặc đối số đến từ phạm vi bên ngoài).
Thomas Baruchel

Câu trả lời:


6

GolfScript (31 ký tự)

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

Chuyển thể từ câu trả lời của tôi cho một câu hỏi nhìn và nói trước đó . Cái này có một hạn chế ít hơn đối với các ngôn ngữ chức năng, cho phép lưu 5 ký tự, nhưng vì hầu hết các câu trả lời cho câu hỏi trước không thể điều chỉnh được (đó là một hạn chế điên cuồng đối với các ngôn ngữ không có chức năng) Tôi không nghĩ nó có ý nghĩa để đóng nó như là một bản dupe.


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]))

Nó hoạt động bằng cách sử dụng chức năng nhóm để nhóm chúng thành các nhóm những thứ bằng nhau. Sau đó, nó sử dụng các ứng dụng với các hàm để xây dựng một hàm đồng thời đọc độ dài và nối nó với một trong các phần tử. Nó sử dụng một bản sửa lỗi và bản đồ để tạo ra một định nghĩa đệ quy (không có điểm.) Và ở đó bạn đi.


10

J (42 ký tự)

Lập trình không có điểm (còn gọi là ngầm) là tự nhiên trong J.

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

Đó là một hàm, để sử dụng nó, bạn viết mã, khoảng trắng và số đầu vào. Ví dụ,

   ,@:((#,{.);.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│
└─┴───┴───┴───────┴───────────┴───────────┴───────────────┴───────────────────┘

Chú ý các hộp đẹp trong đầu ra.

Phụ lục : Dưới đây là một vài "mánh gian lận" tôi đã quá rụt rè khi sử dụng, nhưng bây giờ tôi đã thấy người khác sử dụng chúng trước tiên ...

  • Đây là phiên bản 36 char với một "quy ước gọi" khác: thay thế 8 bằng số thuật ngữ bạn muốn.

    ,@:((#,{.);.1~(1,}.~:}:))&.>^:(<8)<1
    
  • Và nếu có thêm số 0 trong đầu ra là OK, thì đây là phiên bản 32 char:

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

7

GolfScript, 36 ký tự

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

Các biến thường hiếm khi được sử dụng trong GolfScript và tác vụ này chắc chắn không cần đến chúng. Đầu vào là trên stdin, đầu ra cho thiết bị xuất chuẩn. Ví dụ: đầu vào 8cho đầu ra:

[[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]]

Tôi có thể viết một lời giải thích chi tiết về mã này sau, nhưng ít nhất bạn có thể dễ dàng biết rằng nó không sử dụng biến nào bởi thực tế là nó không bao gồm toán tử gán biến ở :bất cứ đâu.


6

Haskell, 118 ký tự (80 không nhập khẩu)

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

6

Bash và coreutils, 111 73 ký tự

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

uniq -cđang thực hiện việc nâng vật nặng để tạo ra số tiếp theo trong chuỗi. yes, sedevaltạo ra số lượng cần thiết của lặp đi lặp lại của đường ống xử lý. Phần còn lại chỉ là định dạng.

Đầu ra được đặt trong một tệp có tên o.:

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

4

Toán học, 65 ký tự

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

Thí dụ:

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

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


3

J, 37 ký tự

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

Dựa trên câu trả lời của tôi cho câu hỏi Pea Pattern . Có thể có một số tiềm năng để rút ngắn ở đây. Cách sử dụng là đối với câu trả lời J khác:

   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

Nó cũng có thêm vấn đề về số 0 mà câu trả lời của tôi đã có.


À, có nhiều hơn một câu hỏi trước đó và nhiều câu trả lời từ câu hỏi đó có thể được sao chép sang câu hỏi này mà không có bất kỳ điều chỉnh nào so với câu hỏi tôi tìm thấy. Tôi gần như bị thuyết phục để bỏ phiếu đóng cửa.
Peter Taylor

@PeterTaylor Mẫu Pea một khác một chút ở chỗ bạn phải sắp xếp các số trong dòng trước đó trước khi tạo mẫu tiếp theo.
Gareth

2

Perl 6: 63 53 ký tự

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

Tạo một danh sách lười biếng của chuỗi Nhìn và Nói ( 1,*.subst(/(\d)$0*/,{.chars~.[0]},:g)...*), sau đó lấy bao nhiêu phần tử theo chỉ định của người dùng ( [^get], đó là một chỉ mục và phương thức mảng [0..(get-1)]), và saytất cả chúng.

Danh sách lười biếng hoạt động bằng cách lấy 1 trước, sau đó để tạo từng số liên tiếp, nó sẽ lấy số cuối cùng tìm thấy và thay thế tất cả các chuỗi của cùng một chữ số, như được khớp với /(\d)$0*/và thay thế chúng bằng {bao nhiêu} + {chữ số nào} hoặc .chars~.[0].

Các biến duy nhất trong mã này là $0, lần bắt đầu đầu tiên của trận đấu và biến ẩn, $_biến cục bộ mà .methodcuộc gọi trần và cả hai đều không do người dùng định nghĩa.


1

GolfScript, 57 43 ký tự

Cách tiếp cận của riêng tôi. Đã kết thúc lâu hơn so với hiện tại buồn bã = (.

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

Đầu ra mẫu cho stdin của 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]

Phiên bản thay thế sẽ loại bỏ 9sentinel, nhưng nó dài hơn ở 47 ký tự. Tôi nghi ngờ nó có nhiều tiềm năng:

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

1

Scala 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
Tôi khá chắc chắn rằng itrong i=>là một biến.
Peter Taylor

1

APL Dyalog, 35 ký tự

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

được đánh giá đầu vào. Trong liên kết tôi đã thay thế nó bằng 8, vì tryapl.org không cho phép người dùng nhập liệu.

Không có biến được đặt tên ( a←1), không có hàm được đặt tên ( f←{}), không có đối số ( , ).

Chỉ thành phần của các chức năng:

  • Các toán tử đơn âm, mỗi loại : , giảm : f/, đi lại:f⍨
  • Toán tử dyadic Sức mạnh điện tử : f⍣n, soạn:f∘g
  • dĩa rèn (f g h)B ←→ (f B)g(h B);A(f g h)B ←→ (A f B)g(A h B)
  • atops- (f g)B ←→ f(g B);A(f g)B ←→ f(A g B)
  • 4 xe lửa (ngã ba) -(f g h k) ←→ (f (g h k))

Các chức năng nguyên thủy được sử dụng:

  • đúng:A⊢B ←→ B
  • đảo ngược:⌽B
  • Đầu tiên:⊃B
  • nối:A,B
  • không khớp : A≢B, đếm:≢B
  • kèm theo : ⊂B, phân vùng:A⊂B
  • làm phẳng:∊B

Trong tryapl.org, nếu bạn loại bỏ dấu vết ⊢1, đó là đối số của thứ được sáng tác lớn này, bạn có thể thấy một sơ đồ về cách phân tích cú pháp:

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

0

J 66 (có I / O)

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

không có IO, điểm 43:

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

Câu hỏi hài hước để đặt ra cho chính mình, khi 9 đầu tiên xuất hiện?


Không bao giờ nhìn vào trang chuỗi số nguyên.
PyRulez

Ok, tôi hiểu rồi. Vậy thì ... tại sao vậy?
jpjacobs


Thủ thuật hay trong phiên bản IO thay thế X bằng đầu vào trong một chuỗi và sau đó gọi eval!
Omar

Đối với câu hỏi vui: không phải bạn khá rõ ràng chỉ có 1, 2 & 3 sao? Ý tôi là để có được 4 hoặc cao hơn, ở bước trước bạn cần bốn chữ số bằng nhau liên tiếp, xaaaay, nhưng điều đó không thể xảy ra vì bạn sẽ nói thêm một bước trước đó bạn đã thấy "x a, a a" hoặc "a a, a a".
Omar
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.