请没有人!


20

我绝对讨厌数字1。因此,我需要您的帮助才能将数字转换为它们的“适当形式”。

正确形式的数字永远不会1连续包含两个。101可以,但是110很丑。

要进行转换,只需跳过所有不正确的数字并正常计数。例如...

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

等等。

您的程序应采用整数并以适当的形式输出。这是,因此以字节为单位的最短代码获胜。


1
输入有上限吗?
lirtosiast,2015年

2
我没有得到109 -> 120转换...
kirbyfan64sos 15/10/23

4
@ kirbyfan64sos因为108映射到109,所以109将映射到下一个数字110,但是该数字连续有两个1,因此它将转到下一个数字,直到达到一个没有的数字。这是120,因为排除了110-119的全部。
Reto Koradi 2015年

3
@Corey Ogburn这不是关于binairy。将其视为数字列表,当您对列表中的每个数字使用no-11规则计算给定数字时,它
会是什么样子

2
@leymannx左侧的数字表示系列中的数字。因此,该系列中的第一个值为1,该系列中的第二个值为2,yadda yadda(龙虾浓汤),该系列中的第十个值为10,该系列中的第十一个值为12,因为我们跳过了11塔莱克斯(Talex)发现这对主人是可憎的。这个想法继续进行,因此为什么该系列中的第108位值是109,而在该系列中的第110个值是120,因为我们跳过一切从110到119希望我澄清不够好。
2015年

Answers:



8

Perl 5、34字节

循环计数器并更改偶数双1。

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

7

Bash + GNU utils,36

seq $1$1|grep -v 11|sed -n "$1{p;q}"

当然1$1足够了,而不是$1$1
尼尔


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按顺序列出未包含的数字,并采用n第一个。零索引的偏离误差为1 0,该列表中包含。

从理论上讲,这将在足够高的数字处失败f(n)>2*n,但n至少在之前不会发生10**50


51个字节:

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

计算数字,i直到满足n不使用数字的配额11

一个函数的长度是相同的,因为需要进行一一修正。

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"是错误的并且"abc"'["cd"是真实的。尽管两个操作数j'[11都是数字,但MUMPS仍然不受干扰。它将愉快地将两个操作数强制转换为字符串,并继续其生命。万岁!

(顺便说一句,如果您能够接受的方案从来没有结束,我们可以缩短这个35个字节:t2(i) f j=1:1 s:j'[11 k=k+1 w:k=i j



-1

Ruby,24个字节

误解了任务,以后会返工!

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

在不包含的输入上不起作用11。例如,12应给予13,而不是12
DLosc

@DLosc天哪,我误解了任务!我待会再做!
Peter Lenkefi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.