誰もお願いしません!


20

私は絶対に数字が嫌いです 1です。ですから、数字を「適切な形式」に変換するためにあなたの助けが必要です。

適切な形式の数値に2つ1のsが連続することはありません。101大丈夫ですが、110、恐ろしいです。

変換するには、不適切な数値をすべてスキップして、通常どおりカウントします。例えば...

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

等々。

プログラムは整数を取り、適切な形式で出力する必要があります。これはであるため、バイト単位の最短コードが優先されます。


1
入力に上限はありますか?
リスト管理者

2
私は109 -> 120変換を得られません
...-kirbyfan64sos

4
@ kirbyfan64sos 108は109にマップされるため、109は次の番号である110にマップされます。しかし、その1つは1が2つ連続しているため、次の番号に到達します。110〜119のすべてが除外されているため、これは120です。
レトコラディ

3
@Corey Ogburn binairyについてではありません。リスト内の各番号に対してno-11ルールを使用して、指定された番号までカウントアップしたときに、番号のリストがどのようになるかを確認してください
-LukStorms

2
@leymannx左側の数字はシリーズの数字を表します。したがって、シリーズの最初の値は1、シリーズの2番目の値は2、yadda yadda(lobster bisque)、シリーズの10番目の値は10、シリーズの11番目の値は12です。タレックスはそれを領主への忌み嫌いだと思った。110から119までのすべてをスキップするため、シリーズの108番目の値が109であり、シリーズの110番目の値が120である理由は、この考えが続いているからです。
15年

回答:



8

Perl 5、34バイト

カウンターをループし、時々ダブルを変更します。

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

テスト

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


6

Pyth、13 11バイト

e.f!}`hT`ZQ

@FryAmTheEggmanのおかげで2バイト節約されました。

ライブデモとテストケース。

13バイトバージョン

e.f!}"11"+ZkQ

コンテキスト:PythPyth、およびPyth
ピーターモーテンセン

@PeterMortensen 3番目は、ここで使用されているPythとは無関係です。実際、このPythが作成されたのは8年前からです。Pythは、Pythonに触発された言語の一般的な名前です。
isaacg

5

JavaScript、53バイト

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

代替(内包表記、同じ長さを使用):

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

見た目はいいが、このタスクにはやり過ぎだ。codegolf.stackexchange.com/a/61594/21348
edc65

4

Python 2、50

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

11順番に含まれていない番号をリストし、n1番目を取得する匿名関数。ゼロインデックスのオフバイワンエラーは0、リストに含めるとキャンセルされます。

理論的には、これは十分な数の場合に失敗しますがf(n)>2*nn少なくともになるまでは発生しません10**50


51バイト:

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

カウントアップ inなしの番号のクォータ11が満たされるまで、。

関数の長さは、off-by-oneの修正が必要なため同じです。

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

3

Python 3 74

まだ少しゴルフが必要です。

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

今はかなり強引です。


2

Perl 5、47バイト

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

2

JavaScript(ES6)41

匿名関数として

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

注:最も簡単な方法は44です。

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

以下のスニペットを実行してテストします。

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

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


2

Haskell、51バイト

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

使用例:([x|x<-[0..],notElem('1','1')$zip=<<tail$show x]!!) 110-> 121

使い方:

[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バイト

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

とても簡単です。ここで唯一の「おもしろい」ことは構造ですj'[11- '[「含まない」演算子ですので、それ"abc"'["ab"はfalseで"abc"'["cd"trueです。の両方のオペランドにもかかわらずj'[11数値でという、MUMPSは動揺しません。両方のオペランドを文字列に自動強制変換し、その寿命を進めます。やった!

(ちなみに、プログラムが終了しないことに問題がなければ、これを35バイトに短縮できます。t2(i) f j=1:1 s:j'[11 k=k+1 w:k=i j



-1

ルビー、24バイト

タスクを誤って解釈した場合、後で再作業します!

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

を含まない入力では機能しません11。たとえば、ではなく12を与える必要が13あり12ます。
DLosc

@DLoscまあ私はタスクを誤解しました!後でやり直します!
ピーターレンケフィ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.