Không ai, làm ơn!


20

Tôi hoàn toàn ghét chữ số 1. Vì vậy, tôi cần sự giúp đỡ của bạn để chuyển đổi số thành "hình thức phù hợp" của họ.

Các số ở dạng thích hợp không bao giờ có hai 1s liên tiếp. 101không sao, nhưng 110gớm ghiếc

Để chuyển đổi, chỉ cần bỏ qua tất cả các số không chính xác và đếm bình thường. Ví dụ...

1 -> 1
2 -> 2
...
10 -> 10
11 -> 12
12 -> 13
...
108 -> 109
109 -> 120
110 -> 121
111 -> 122

vân vân

Chương trình của bạn nên lấy một số nguyên và xuất nó ở dạng thích hợp. Đây là , vì vậy mã ngắn nhất tính bằng byte thắng.


1
Có một giới hạn trên về đầu vào?
lirtosiast

2
Tôi không nhận được 109 -> 120chuyển đổi ...
kirbyfan64sos

4
@ kirbyfan64sos Từ 108 bản đồ thành 109, 109 sẽ ánh xạ tới số tiếp theo là 110. Nhưng số đó có hai số 1 liên tiếp, do đó, nó sẽ chuyển sang số tiếp theo cho đến khi không đạt được số tiếp theo. Đó là 120, vì tất cả 110-119 được loại trừ.
Reto Koradi

3
@Corey Ogburn Không phải là về bin. Hãy xem nó như một danh sách các số sẽ như thế nào khi bạn đếm đến số đã cho với quy tắc số 11 cho mỗi số trong danh sách
LukStorms

2
@leymannx Số bên trái đại diện cho số trong chuỗi. Vì vậy, giá trị đầu tiên trong chuỗi là 1, giá trị thứ hai trong chuỗi là 2, yadda yadda (tôm hùm bisque), giá trị thứ mười trong chuỗi là 10 và giá trị thứ mười một trong chuỗi là 12, vì chúng tôi đã bỏ qua 11 như Talex thấy đó là một sự gớm ghiếc đối với chúa. Ý tưởng này tiếp tục, do đó tại sao giá trị thứ 108 trong chuỗi là 109 và giá trị thứ 110 trong chuỗi là 120, vì chúng tôi bỏ qua mọi thứ từ 110 đến 119. Hy vọng tôi đã làm rõ đủ.
ahall

Câu trả lời:



8

Perl 5 , 34 byte

Vòng lặp một bộ đếm và thay đổi đôi khi một.

map{$i++;$i=~s/11/12/}1..pop;say$i

Kiểm tra

$ perl -M5.012 -e 'map{$i++;$i=~s/11/12/}1..pop;say$i' 111
$ 122


6

Bình thường, 13 11 byte

e.f!}`hT`ZQ

Đã lưu 2 byte nhờ @FryAmTheEggman.

Bản demo và trường hợp thử nghiệm trực tiếp.

Phiên bản 13 byte

e.f!}"11"+ZkQ

Bối cảnh: Pyth , Pyth , và Pyth .
Peter Mortensen

@PeterMortensen Cái thứ ba không liên quan đến Pyth được sử dụng ở đây - thực sự là từ 8 năm trước khi Pyth này được tạo ra, thực sự. Pyth chỉ là một tên phổ biến cho các ngôn ngữ lấy cảm hứng từ Python.
isaacg

5

JavaScript, 53 byte

n=>[...Array(n*2).keys()].filter(a=>!/11/.test(a))[n]

Thay thế (sử dụng hiểu, cùng độ dài):

n=>[for(i of Array(n*2).keys())if(!/11/.test(i))i][n]

Rất vui khi thấy, nhưng quá mức cho nhiệm vụ này. codegolf.stackexchange.com/a/61594/21348
edc65

4

Con trăn 2, 50

lambda n:[i for i in range(n*2)if'11'not in`i`][n]

Một hàm ẩn danh liệt kê các số không chứa 11theo thứ tự và lấy số nthứ nhất. Lỗi off-by-one của zero-index hủy bỏ với sự bao gồm 0trong danh sách.

Về lý thuyết, điều này sẽ thất bại với số lượng đủ cao ở đâu f(n)>2*n, nhưng điều này không nên xảy ra cho đến khi nít nhất là 10**50.


51 byte:

n=input();i=0
while n:i+=1;n-='11'not in`i`
print i

Đếm số icho đến khi hạn ngạch của nsố mà không 11được đáp ứng.

Một hàm có cùng độ dài vì cần chỉnh sửa từng cái một.

f=lambda n,i=0:n+1and f(n-('11'not in`i`),i+1)or~-i

3

Con trăn 3 74

Vẫn cần một chút chơi golf.

n=int(input())
c=0
for x in ' '*n:
 c+=1
 while'11'in str(c):c+=1
print(c)

Đó là lực lượng vũ phu ngay bây giờ.


2

Perl 5, 47 byte

@_[$_]=++$i!~/11/?$i:redo for 1..<>;print$_[-1]

2

JavaScript (ES6) 41

Là một chức năng ẩn danh

n=>eval('for(i=0;/11/.test(++i)||n--;)i')

Lưu ý: cách đơn giản nhất sẽ là 44:

n=>{for(i=0;/11/.test(i)||n--;i++);return i}

Kiểm tra chạy đoạn mã dưới đây.

f=n=>eval('for(i=0;/11/.test(++i)||n--;)i')

alert(f(+prompt('Enter number')))


2

Haskell, 51 byte

([x|x<-[0..],notElem('1','1')$zip=<<tail$show x]!!)

Ví dụ sử dụng: ([x|x<-[0..],notElem('1','1')$zip=<<tail$show x]!!) 110-> 121.

Làm thế nào nó hoạt động:

[x|x<-[0..]                                   ]    -- take all x starting with 0
           ,                                       -- where
                   ('1','1')                       -- the pair of two chars '1'
            notElem                                -- is not part of
                             zip=<<tail            -- the list of pairs of neighbor elements of
                                        show x     -- the string representation of x
                                               !!  -- take nth element, where n is the parameter

1

MUMPS, 37 byte

t(i) f j=1:1 s:j'[11 k=k+1 q:k=i
    q j

Khá đơn giản. Điều "thú vị" duy nhất ở đây là cấu trúc j'[11- '[là toán tử "không chứa", do đó "abc"'["ab"là sai và "abc"'["cd"là đúng. Mặc dù cả hai toán hạng j'[11là số, MUMPS vẫn không bị xáo trộn. Nó sẽ vui vẻ tự động cả hai toán hạng thành chuỗi và tiếp tục với cuộc sống của nó. Hoan hô!

(Ngẫu nhiên, nếu bạn ổn với chương trình không bao giờ kết thúc, chúng ta có thể rút ngắn điều này xuống còn 35 byte t2(i) f j=1:1 s:j'[11 k=k+1 w:k=i j:)



-1

Ruby, 24 byte

Giải thích sai nhiệm vụ, sẽ làm lại sau!

$><<gets.gsub('11','12')

Không hoạt động trên các đầu vào không chứa 11. Ví dụ, 12nên cho 13, không 12.
DLosc

@DLosc Ôi trời, tôi đã hiểu sai nhiệm vụ! Tôi sẽ làm lại sau!
Peter Lenkefi
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.