Personne, s'il vous plait!

20

Je déteste absolument le chiffre 1. J'ai donc besoin de votre aide pour convertir les nombres en leurs "formes appropriées".

Les nombres en bonne forme n'ont jamais deux 1s d'affilée. 101c'est bien, mais 110c'est hideux.

Pour convertir, sautez simplement tous les numéros incorrects et comptez normalement. Par exemple...

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

etc.

Votre programme doit prendre un entier et le sortir sous une forme appropriée. C'est le , donc le code le plus court en octets l'emporte.

talex
la source
1
Y a-t-il une limite supérieure à l'entrée?
lirtosiast
2
Je ne reçois pas la 109 -> 120conversion ...
kirbyfan64sos
4
@ kirbyfan64sos Puisque 108 correspond à 109, 109 correspondrait au numéro suivant, qui est 110. Mais celui-ci a deux 1 de suite, donc il passe au numéro suivant jusqu'à ce qu'il atteigne celui qui n'en a pas. Soit 120, puisque tous les 110-119 sont exclus.
Reto Koradi
3
@Corey Ogburn Il ne s'agit pas de binairy. Voyez-le comme une liste de nombres serait lorsque vous comptez jusqu'au nombre donné avec la règle no-11 pour chaque numéro de la liste
LukStorms
2
@leymannx Le chiffre de gauche représente le chiffre de la série. Ainsi, la première valeur de la série est 1, la deuxième valeur de la série est 2, yadda yadda (bisque de homard), la dixième valeur de la série est 10 et la onzième valeur de la série est 12, car nous avons ignoré 11 comme talex trouve cela une abomination pour le seigneur. Cette idée continue, d'où pourquoi la 108e valeur de la série est 109 et la 110e valeur de la série est 120, car nous sautons tout de 110 à 119. J'espère que j'ai assez bien clarifié.
ahall

Réponses:

8

Burlesque , 10 octets

{11 ~ [n!} FO

Versions plus anciennes:

ro{11~[n!}f[

ro{Sh"11"~=n!}f[
mroman
la source
Veuillez ajouter un lien dans la langue :)
mınxomaτ
terminé. Il existe depuis 2012, il y a aussi un article sur RosettaCode et l'esowiki.
mroman du
8

Perl 5 , 34 octets

Boucler un compteur et changer le double occasionnel.

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

Tester

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

Utilitaires Bash + GNU, 36

seq $1$1|grep -v 11|sed -n "$1{p;q}"
Traumatisme numérique
la source
Sûrement 1$1suffisant, plutôt que $1$1?
Neil
6

Pyth, 13 11 octets

e.f!}`hT`ZQ

Enregistré 2 octets grâce à @FryAmTheEggman.

Démonstration en direct et cas de test.

Version 13 octets

e.f!}"11"+ZkQ
kirbyfan64sos
la source
Contexte: Pyth , Pyth et Pyth .
Peter Mortensen
@PeterMortensen Le troisième n'est pas lié au Pyth utilisé ici - c'est en fait depuis 8 ans avant que ce Pyth soit créé. Pyth est juste un nom populaire pour les langages inspirés de Python.
isaacg
5

JavaScript, 53 octets

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

Alternatif (en utilisant des compréhensions, même longueur):

n=>[for(i of Array(n*2).keys())if(!/11/.test(i))i][n]
Mwr247
la source
Agréable à voir, mais exagéré pour cette tâche. 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]

Une fonction anonyme qui répertorie les numéros ne contenant pas 11dans l'ordre, et prend le nth. L'erreur off-by-one de l'indexation zéro s'annule avec l'inclusion de 0dans la liste.

En théorie, cela échouera pour des nombres suffisamment élevés f(n)>2*n, mais cela ne devrait pas arriver avant nau moins 10**50.


51 octets:

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

Compte les nombres ijusqu'à ce que le quota de nnombres sans 11soit atteint.

Une fonction a la même longueur en raison des corrections ponctuelles nécessaires.

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

Python 3 74

Encore besoin d'un peu de golf.

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

C'est assez brutal en ce moment.

Morgan Thrapp
la source
2

Perl 5, 47 octets

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

JavaScript (ES6) 41

En tant que fonction anonyme

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

Remarque: la manière la plus simple serait 44:

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

Testez l'exécution de l'extrait ci-dessous.

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

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

edc65
la source
2

Haskell, 51 octets

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

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

Comment ça fonctionne:

[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
nimi
la source
1

MUMPS, 37 octets

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

Assez simple. La seule chose "intéressante" ici est la construction j'[11- '[c'est l'opérateur "ne contient pas", donc c'est "abc"'["ab"faux et "abc"'["cd"c'est vrai. Malgré les deux opérandes d' j'[11être des nombres, MUMPS reste imperturbable. Il sera heureux de contraindre automatiquement les deux opérandes à des chaînes et de poursuivre sa vie. Hourra!

( Soit dit en passant, si vous êtes d' accord avec le programme jamais terminer, nous pouvons raccourcir ce à 35 octets: t2(i) f j=1:1 s:j'[11 k=k+1 w:k=i j)

senshin
la source
0

PHP, 43 octets

while(preg_match('/11/',$i)){$i++;}print$i;
leymannx
la source
-1

Rubis, 24 octets

Mal interprété la tâche, retravaillera plus tard!

$><<gets.gsub('11','12')
Peter Lenkefi
la source
Ne fonctionne pas sur les entrées qui n'en contiennent pas 11. Par exemple, 12devrait donner 13, non 12.
DLosc
@DLosc Oh mon Dieu, j'ai mal interprété la tâche! Je le retravaillerai plus tard!
Peter Lenkefi