Considérons un pont de longueur B formé de carreaux étiquetés avec les chiffres des entiers positifs concaténés. Par exemple, si B avait 41 ans, cela ressemblerait à ceci:
----------------------------------------- 12345678910111213141516171819202122232425
Imaginez maintenant un train de longueur T traversant le pont. Le point le plus à gauche du train commence à la position X (indexé 1). Pour mieux comprendre le problème, faisons un schéma de l'événement, avec B = 41, T = 10, X = 10 . Le train est tracé à l'aide de signes ( =
) et de lignes égaux :
__________ | ======== | | ======== | ----------------------------------------- 12345678910111213141516171819202122232425
Le train peut avancer, à chaque étape, par la somme des tuiles uniques sur lesquelles il se trouve. Par exemple, les tuiles sur lesquelles se trouve le train sont [1, 0, 1, 1, 1, 2, 1, 3, 1, 4]
:, les tuiles uniques (dédupliquées) sont:, [1, 0, 2, 3, 4]
et leur somme est 10
. Par conséquent, le train peut avancer par des 10
tuiles. Nous devons le dessiner à nouveau et répéter le processus jusqu'à ce que le point le plus à gauche du train ait dépassé la dernière tuile:
__________ | ======== | | ======== | ----------------------------------------- 12345678910111213141516171819202122232425 Somme de tuiles uniques: 1 + 5 + 6 + 7 + 8 + 9 = 36. Le train avance de 36 tuiles ... __________ | ======== | | ======== | ----------------------------------------- 12345678910111213141516171819202122232425 Le train a évidemment traversé complètement le pont, nous devons donc nous arrêter maintenant.
Puisque les gens à l'intérieur s'ennuient, ils comptent les tuiles que le train a avancées à chaque fois. Dans ce cas précis, 10
et 36
. Pour résumer le tout, le train s'est déplacé 46
avant de passer le pont.
Tâche
Étant donné trois entiers positifs, B (la longueur du pont), T (la longueur du train) et X (la position de départ, indexée 1 ), votre tâche consiste à déterminer combien de tuiles le train a déplacé jusqu'à ce qu'il traverse le pont en suivant les règles au dessus de.
- Vous pouvez supposer que:
- B est supérieure à T .
- X est inférieur à B .
- T est au moins 2 .
- Le train traverse finalement le pont.
- Toutes nos règles standard s'appliquent.
- C'est du code-golf , donc le code le plus court en octets gagne!
Cas de test
Entrée ([B, T, X]) -> Sortie [41, 10, 10] -> 46 [40, 10, 10] -> 46 [30, 4, 16] -> 24 [50, 6, 11] -> 50
Un autre exemple fonctionnel pour le dernier cas de test:
Le pont est de longueur 50, le train 6 et la position de départ est 11. ______ | ==== | | ==== | -------------------------------------------------- 12345678910111213141516171819202122232425262728293 Tuiles uniques: [0, 1, 2]. Somme: 3. ______ | ==== | | ==== | -------------------------------------------------- 12345678910111213141516171819202122232425262728293 Tuiles uniques: [1, 2, 3, 4]. Somme: 10. ______ | ==== | | ==== | -------------------------------------------------- 12345678910111213141516171819202122232425262728293 Tuiles uniques: [1, 7, 8, 9]. Somme: 25. ______ | ==== | | ==== | -------------------------------------------------- 12345678910111213141516171819202122232425262728293 Tuiles uniques: [9, 3]. Somme: 12. ______ | ==== | | ==== | -------------------------------------------------- 12345678910111213141516171819202122232425262728293 Le train existe le pont. Somme totale: 3 + 10 + 25 + 12 = 50.
(200, 2, 169)
, le train est bloqué sur le00
dans…9899100101102…
.Réponses:
Coque , 20 octets
Essayez-le en ligne!
Prend trois arguments pour T , B , X .
Explication
la source
Python 2 ,
110105104 1041031009796 octets[~-x:x+~-t]
au golf[~-x:][:t]
....range(1,-~b)))[:b]
au golf...range(b)))[1:-~b]
.[1:-~b][~-x:]
au golf[:-~b][x:]
.[:-~b][x:]
au golf[x:-~b]
.while
boucle à uneexec
déclaration.Essayez-le en ligne!
la source
[~-x:x+~-t]
peut être remplacé par[x-1:][:t]
exec"x+=sum(set(map(int,''.join(map(str,range(b)))[x:-~b][:t])));"*b
fonctionne pour 96. (Le train ne prendra jamais plus que desb
pas pour quitter le pont, et toute cette opération reviendrax+=0
encore et encore une fois qu'il sera parti.)Haskell,
106102 octetsEssayez-le en ligne!
la source
R , 123 octets
Implémente simplement l'algorithme décrit.
R est assez terrible aux cordes.
Essayez-le en ligne!
la source
Gelée ,
2221 octetsUn programme complet prenant trois arguments - l'ordre est B , X , T - qui imprime le résultat.
Essayez-le en ligne!
Comment?
la source
JavaScript (ES6), 117 octets
Une paire de fonctions récursives:
f()
résume les mouvements du train.g()
crée la chaîne de nombres.Moins golfé:
Afficher l'extrait de code
la source
PHP> = 7.1, 153 octets
Essayez-le en ligne!
Pour le rendre compatible avec les versions inférieures de PHP, passez
[,$p,$q,$r]=
àlist(,$p,$q,$r)=
(+4 octets).la source