Étant donné une liste d' N
entiers, chacun avec des N
chiffres, sortez un nombre qui diffère du premier nombre en raison du premier chiffre, du deuxième nombre en raison du deuxième chiffre, etc.
Exemple
Compte tenu de cette liste:
1234
4815
1623
4211
Le 2932
premier chiffre du numéro est différent du premier chiffre du premier numéro, son deuxième chiffre est différent du deuxième chiffre du deuxième numéro, etc. Par conséquent, ce serait une sortie valide.
Contributions
- Vous pouvez prendre la liste et
N
en entrée, ou seulement la liste si vous le souhaitez. - Chaque entier de la liste aura nécessairement autant de chiffres que la longueur de la liste (
N
) - Les nombres n'auront pas de zéros en tête
- La liste d'entrée doit contenir des nombres et non des chaînes.
- Vous pouvez prendre les entrées en tant qu'arguments de fonction, via
STDIN
ou tout autre élément similaire. - Vous pouvez supposer que la liste ne comportera pas plus de 10 éléments (et aucun nombre dans la liste ne sera plus grand que
2147483647
)
Les sorties
- Il ne suffit pas que la sortie ne figure pas dans la liste. Les chiffres doivent différer comme expliqué ci-dessus.
- Vous pouvez utiliser n'importe quelle stratégie de sélection de chiffres qui respecte la contrainte des différents chiffres.
- Le nombre ne peut pas avoir de zéros en tête
- Vous pouvez sortir le numéro
STDOUT
, le renvoyer d'une fonction, etc.
Cas de test
Input:
12345678
23456789
34567890
45678901
56789012
67890123
78901234
89012345
Possible output: 24680246
Input:
1
Possible output: 2
Notation
Il s'agit de code-golf , donc la réponse la plus courte en octets l'emporte.
code-golf
number
number-theory
Fatalize
la source
la source
STDIN
en entier avant d'analyser?STDIN
est une chaîne par défaut ...Réponses:
Gelée,
87 octets1 octet économisé grâce à Dennis.
Essayez-le en ligne!
Explication
Convertit chaque chiffre en
1
, sauf0
et1
devient2
.la source
CJam (
1514 octets)Démo en ligne
Merci à Adnan pour une économie d'un octet.
Dissection
la source
i2%)
pourrait être de49&)
travailler directement avec des caractères plutôt qu'avec des codes ASCII.Python 2,
4745 octetsMerci à @xnor d'avoir joué au golf sur 2 octets!
Testez-le sur Ideone .
Comment ça fonctionne
`x`
donne une représentation sous forme de chaîne de la liste x .Pour le premier cas de test, cela donne la chaîne
[1::n+3]
récupère chaque (n + 3) ème caractère - où n est la longueur de x en commençant par le second. Comptant 2 caractères,
, on récupère le premier chiffre du premier chiffre, le deuxième chiffre du deuxième chiffre, etc.Nous prenons maintenant le nombre modulo 10 n ÷ 2 pour mapper le premier chiffre de la plage [0, 4] .
Pour 93579135 , nous obtenons 93579135% 50000000 = 43579135 .
Enfin, nous ajoutons 10 n ÷ 9 au dernier résultat, qui incrémente - en passant de 9 à 0 - tous les chiffres de 1 (pas de report) ou de 2 (avec report).
Pour 43579135 , nous obtenons 43579135 + 11111111 = 54690246 .
la source
MATL,
11109 octetsPrend uniquement un vecteur de colonne d'entiers en entrée.
N
n'est pas fourni.Essayez-le en ligne
Explication
la source
2
: matl.tryitonline.net/…VXd9\QV!U
Pyth, 11 octets
Boucle simple, changez chaque chiffre en 1, sauf que 1 devient 2.
la source
Q
etk
! Vous pouvez cependant enregistrer un octet avec pendant la transformation des chiffres:s.eh-12@`b
Rétine,
393837Enregistré 1 octet merci Martin!
Nécessite un saut de ligne de fin dans l'entrée.
Obtient les diagonales et traduit 0 et 2-9 en 1 et 1 en 2.
L'idée de base pour obtenir les diagonales est de pousser une capture pour chaque ligne au-dessus de la ligne actuelle, puis de consommer une capture pour correspondre à un caractère, puis de conserver le caractère suivant.
Essayez-le en ligne
la source
J,
2622 octetsApproche similaire aux autres utilisant la méthode
<= 1
etincrement
la diagonale.Usage
Nécessite uniquement la liste des entiers comme argument.
la source
Python 2, 54 octets
la source
-~n
Java, 94 octets
Opérations numériques pures pour la victoire! :)
Exemple d'entrée / sortie:
Programme complet (avec code non golfé):
la source
Java, 93 octets
Non golfé
Production
la source
J, 37 octets
Peut probablement être joué au golf, mais j'ai oublié s'il y avait une commande pour les "diagonales".
la source
n
aide de<list> (#:~#&10) <n>
. La première diagonale peut être trouvée avec(< 0 1) |: <list>
où(< 0 1)
est une boîte pour les axes à sélectionner, en utilisant les deux, avec|:
Reng v.3.3, 60 octets
Pour Reng, c'était plutôt simple. Essayez-le ici!L'entrée est une liste de nombres séparés par des espaces.
1: init
k
est le nombre d'entrées (nombre de nombres), et nous décrémentons de 1 et restaurons pour l'étape de boucle.aií
prend toutes les entrées.r
inverse la pile pour le traitement de l'entrée.1ø
passe à la ligne suivante.2: boucle
1[
prend l'élément supérieur de la pile et dans une nouvelle pile.å
le divise en chiffres.{$}
pousse un bloc de code contenant l'opération "drop"; ceci est répéték
fois (k*
) et le bloc de code est supprimé ($
.k1-#k
décrémentek
.)9(
place9
au STOS, et-
soustrait TOS du STOS.#o
stocke ce nombre danso
, eta$;
supprime tous les membres de la pile.]
ferme la pile parente.o
remeto
à en haut; c'est notre chiffre que nous enregistrons. le)
déplace vers le bas afin que nous puissions continuer notre boucle.s
vérifie généralement la non-entrée (c'est-à-dire, l'égalité à-1
), mais nous pouvons l'utiliser pour sortir de notre boucle lorsquek == -1
. Doncs^
monte quandk == -1
.$
tombek
de la pile, et notre boucle recommence.3: finale
<
dirige le pointeur vers la gauche et$
tombek
de la pile.b
est un miroir de gauche, donc nous entrons à travers, mais il rebondit en frappant;
, un miroir de condition de pile.!n
imprime un chiffre si et seulement si nous allons à gauche.~
termine le programme lorsque nous avons terminé l'impression.la source
Mathematica 52 octets
Cela suit l'approche de Peter Taylor et d'autres (sans utiliser les codes Ascii).
Exemple
la source
ClojureScript, 58 caractères
Les exigences de type ont rendu cela un peu plus long que nécessaire, et
map-indexed
le nombre de caractères n'a pas aidé.Souvent, mes soumissions sont également valides pour Clojure, mais cela utilise une partie de la fuite de ClojureScript avec JavaScript. La soustraction d'un nombre et d'une chaîne contraint la chaîne à un nombre, c'est-à-dire
(- 9 "5")
égale4
.la source
PHP, 46/41/40 octets
Divers sélecteurs de chiffres pour comparaison. Je pensais que "9 chiffres" serait le plus court, mais le cas spécial devait garder un zéro sur le premier chiffre le submerge.
Alimenté par les arguments CLI:
la source
Rubis, 21 octets
Un programme complet. Courez avec le
-n
drapeau. Utilise le mappage suivant:n -> n%2+1
.la source
JavaScript (ES6), 41
L'astuce% 9 + 1 est empruntée à la réponse de Suever. Pour une fois,
.reduce
bat.map
. Notez que l'+=
opérateur est utilisé pour éviter les parenthèses.la source
Perl, 18 octets
Comprend +1 pour
-p
Exécutez avec les lignes d'entrée sur STDIN. La sortie est 1 sauf 2 lorsque la diagonale est 1
cantor.pl
la source
Pyth, 14 octets
Essayez-le en ligne!
la source