Défi:
Contribution:
Une liste triée d'entiers positifs.
Production:
La quantité d'entiers qui sont toujours au même index exact, après avoir fait tourner les chiffres de chaque entier sa quantité d'index de fois vers la gauche et trié à nouveau la liste modifiée.
Exemple:
Entrée: [8,49,73,102,259,762,2782,3383,9217,37846,89487,7471788]
Sortie (indexation 0): 6
Sortie (indexation 1):5
Pourquoi?
Indexation basée sur 0:
After rotating each: [8,94,73,102,592,276,8227,3338,9217,63784,89487,7887471]
Sorted again: [8,73,94,102,276,592,3338,8227,9217,63784,89487,7887471]
Input indices: 0 1 2 3 4 5 6 7 8 9 10 11
Original input-list: [8,49,73,102,259,762,2782,3383,9217,37846,89487,7471788]
Modified list: [8,73,94,102,276,592,3338,8227,9217,63784,89487,7887471]
Modified indices: 0 2 1 3 5 4 7 6 8 9 10 11
Equal indices: ^ ^ ^ ^ ^ ^
So the output is: 6
Indexation basée sur 1:
After rotating each: [8,49,37,021,925,762,2278,3383,2179,37846,94878,8874717]
Sorted again: [8,(0)21,37,49,762,925,2179,2278,3383,37846,94878,8874717]
Input indices: 1 2 3 4 5 6 7 8 9 10 11 12
Original input-list: [8,49,73,102,259,762,2782,3383,9217,37846,89487,7471788]
Modified list: [8,21,37,49,762,925,2179,2278,3383,37846,94878,8874717]
Modified indices: 1 4 3 2 6 5 9 7 8 10 11 12
Equal indices: ^ ^ ^ ^ ^
So the output is: 5
Règles du défi:
- La liste d'entrées est garantie de ne contenir que des entiers positifs.
- La liste d'entrées est garantie d'être triée du plus bas au plus élevé.
- La liste d'entrée est garantie pour contenir au moins deux éléments.
- Comme vous pouvez le voir ci-dessus, l'indexation basée sur 0 et basée sur 1 est autorisée. Veuillez indiquer dans votre réponse laquelle des deux vous avez utilisée, car les sorties peuvent différer en conséquence!
- Les
0
s après rotation sont ignorés, ce qui peut être vu avec l'exemple basé sur 1 ci-dessus, où l'entier102
devient021
après rotation, et est ensuite traité comme21
. - Les nombres entiers sont garantis uniques dans la liste d'entrée et sont garantis rester uniques une fois les rotations terminées.
- Notez que nous ne regardons que les positions des entiers tournés en corrélation avec les positions de l'entrée, pas avec les valeurs de la liste d'entrée. Pour clarifier ce que je veux dire par ceci: avec la liste d'entrée
[1234,3412]
et l'indexation basée sur 1, la liste devient[2341,1234]
après avoir fait tourner chaque entier son nombre d'indices, puis lorsqu'elle est triée[1234,2341]
. Bien que la liste d'entrée d'origine et la liste pivotée contiennent l'entier1234
à la position de tête, elles ne sont pas les mêmes! Le tourné1234
était3412
avant. La sortie indexée 1 pour cette entrée-liste est donc0
, puisque les deux entiers ont échangé leurs positions. - L'entrée est flexible. Il peut s'agir d'une liste / d'un flux / d'un tableau d'entiers / de chaînes / de tableaux de chiffres, etc. Veuillez indiquer ce que vous avez utilisé si vous ne prenez pas les entrées comme des entiers.
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues autres que le golf de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse avec des règles d'E / S par défaut , vous êtes donc autorisé à utiliser STDIN / STDOUT, des fonctions / méthodes avec les paramètres appropriés et des programmes complets de type retour. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code (par exemple TIO ).
- De plus, l'ajout d'une explication à votre réponse est fortement recommandé.
Cas de test:
Input: [8, 49, 73, 102, 259, 762, 2782, 3383, 9217, 37846, 89487, 7471788]
0-based output: 6
1-based output: 5
Input: [1234, 3412]
0-based output: 2
1-based output: 0
Input: [2349, 2820, 17499, 21244, 29842, 31857, 46645, 56675, 61643, 61787]
0-based output: 3
1-based output: 0
Input: [4976, 11087, 18732, 22643, 52735]
0-based output: 2
1-based output: 3
Input: [4414, 5866, 7175, 8929, 14048, 16228, 16809, 19166, 24408, 25220, 29333, 44274, 47275, 47518, 53355]
0-based output: 4
1-based output: 4
Input: [11205, 16820, 63494]
0-based output: 1
1-based output: 3
N'hésitez pas à générer plus de cas de test aléatoires avec (ou à vous inspirer) de ce programme 05AB1E non golfé , où l'entrée est la taille de la liste aléatoire (REMARQUE: la sortie de ce générateur peut ne pas respecter la règle "Les entiers sont garantis uniques dans la liste d'entrées, et sont garantis pour rester uniques une fois les rotations terminées ", donc gardez cela à l'esprit lorsque vous l'utilisez.)
Réponses:
R ,
114107 octets-5 octets grâce à Giuseppe.
Dépassé par digEmAll.
Essayez-le en ligne!
0 indexé.
Version non golfée:
Pour faire pivoter les
b
chiffres d'un entier parj
positions, le code répète les chiffres plusieurs fois, puis prend les chiffres en positionsj+1
àj+b
. Par exemple, pour faire pivoter102
4 fois, conservez les valeurs marquées d'unx
(positions 5 à 7):donc le résultat est
021
.la source
seq(a=...)
. Je m'attends à ce qu'il y ait de laMap
magie à effectuer, mais mes tentatives ont laissé le nombre d'octets inchangé au mieux.Map
peut être un peu trop cher car le passe-function
partout fait au moins 9 octets, mais si vous passez à l'index 0, nous pouvons faire 109 octetsseq(a=l)
peut êtreseq(l)
aussi long que l'entrée a au moins 2 éléments (j'ai demandé si c'était OK).05AB1E , 9 octets
Essayez-le en ligne!
Utilise l'indexation basée sur 0.
Explication:
la source
Japt
-x
,109 octetsBasé sur 0
Essayez-le
la source
Gelée , 9 octets
Essayez-le en ligne!
Lien monadique qui prend une liste d'entiers et renvoie un entier indiquant le nombre d'entiers qui restent en place après avoir effectué la rotation à l'aide de l'indexation 1.
Explication
la source
Python 2 ,
1041009793 octetsEssayez-le en ligne!
Indexation basée sur 0.
Tourne d'abord chaque nombre, puis compare le résultat avec le résultat, mais trié.
Enregistré:
la source
input()
:)def
tout de suite (ils sont assez inutiles en Python 2, contrairement à Python 3).s
.R ,
908885 octetsEssayez-le en ligne!
Code déroulé avec explication:
la source
J ,
2826 octets-2 octets grâce à Jonah
Essayez-le en ligne!
la source
"0
( essayez-le en ligne! ) Mais à part ça, je n'ai pas vu un moyen de jouer au golf plus loin.Stax ,
1110 octetsExécuter et déboguer
Ce programme utilise une indexation basée sur 0 et prend les entrées comme un tableau de chaînes. J'ai économisé un octet en profitant de la nouvelle entrée clarificatinos.
la source
Perl 5
-pa
, 80 octetsEssayez-le en ligne!
Prend l'entrée sous forme de nombres séparés par des espaces sur STDIN; donne un résultat basé sur 1.
la source
Pyth , 15 octets
Essayez-le en ligne! Utilise l'indexation basée sur 0.
la source
s
- la version originale du code avaitv
le même effet. Je vais le modifier à nouveauAPL + WIN,
23, 2119 octets2 octets enregistrés en entrant les entiers comme vecteur de caractères imbriqué
1 indexé.
Essayez-le en ligne! Gracieuseté de Dyalog Classic
la source
JavaScript (Node.js) ,
1079995 octets-8 octets Merci @Shaggy d'avoir accepté un tableau de chaînes à la place. En outre joué 4 octets de cela. Ne déclenchera pas d'erreur de mémoire cette fois.
Essayez-le en ligne!
JavaScript (Node.js) ,
111107 octets-4 octets Merci @Arnauld!
Essayez-le en ligne!
JavaScript (Node.js) ,
113111 octetsEssayez-le en ligne!
0 indexé. Peut déclencher une erreur de mémoire pour les entrées très volumineuses.
la source
Perl 6 , 50 octets
Essayez-le en ligne!
Indexation basée sur 0. Également exposé un bug Rakudo .
Explication
la source
PHP ,
159141134130 octetsEssayez-le en ligne!
Indexation à base zéro.
Non golfé:
la source
.=''
?K (Kona) ,
2521 octets-4 octets grâce à ngn!
Essayez-le en ligne!
la source
{.:y!x}'[$x;t:!#x]
->.:'(t:!#x)!'$x
Requête T-SQL, 99 octets
Sql n'a pas de méthode de rotation, j'ai donc dû implémenter ma propre syntaxe, car il s'agit d'une requête, elle devait être effectuée sans boucle.
Indexation basée sur 0.
Utilisation d'une variable de table en entrée.
Essayez-le en ligne
la source
Icône , 141 octets
Essayez-le en ligne!
Indexation basée sur 1
la source
Perl 5 , 104 octets
Essayez-le en ligne!
Indexation basée sur 0 en Perl. Non golfé et commenté:
la source
Rubis
-ap
, 77 octets1 indexé. Temp a été supprimé plus tôt, car j'ai raté une partie de la spécification.
-p
lit une ligne de STDIN et sort$_
à la fin.-a
divise cette ligne par des espaces et l'enregistre sous$F
.Essayez-le en ligne!
la source
[...].join.to_i
pareval [...]*''
eval
l'interprétera comme un nombre de base 8, ce qui pourrait gâcher nos chiffres ...Wolfram Language (Mathematica) , 65 octets
Essayez-le en ligne!
1 basé. Nous prenons l'entrée comme une liste de listes de chiffres, ce qui fonctionne parce que Mathematica ordonne les listes par longueur, puis lexicographiquement, c'est-à-dire tout comme les nombres originaux.
la source
Bash ,
204201 octetsLa seule chose intéressante ici (peut-être) est l'utilisation de
eval
. L'algorithme est également maladroit en ce qu'il crée une liste triée puis la lit afin de déterminer le ou les index modifiés.Solution basée sur 1. Mes remerciements à @RobinRyder pour l'algorithme de rotation utile.
Essayez-le en ligne!
Code révisé suite aux commentaires de Kevin; Essayez-le en ligne!
la source
;}
. Vous pouvez également modifier votre première boucle enfor((i=0;++i<=$#;));
.Scala ,
200160 octetsEssayez-le en ligne!
0 indexé. 160 caractères après suppression de l'indentation et des sauts de ligne. Cela imprime 6:
la source