En lisant mon histoire et en prenant des notes, je ne peux m'empêcher de me lasser d'écrire toutes ces longues dates –– 1784, c'est six levées de crayon entières! jǝǝz!
Comme vous pouvez le voir, je –– comme la plupart des affiches de défi sur ce site –– je suis paresseux quand il s'agit d'écrire des choses. Je vous demande donc de bien vouloir m'aider à raccourcir certaines dates. Bien sûr, votre solution doit être aussi courte que possible car ma main est déjà fatiguée d' écrire en tapant les cas de test.
Comment raccourcir une date?
Eh bien, vous devriez demander. C'est assez simple:
- Prenez deux entiers en entrée dans l'ordre que vous souhaitez (
(smallest, biggest)
ou(biggest, smallest)
). - Prenez le plus grand des deux nombres et ne prenez que la partie qui n'est pas dans le plus petit nombre.
Par exemple, étant donné2010, 2017
, raccourcissez2017
à-7
car se201_
trouve dans les deux aux mêmes emplacements numériques. - Imprimez ou renvoyez le plus petit nombre, suivi d'un tiret, puis du plus grand nombre raccourci.
Par exemple:
Bonus brownies for you if you figure out these dates' significance :)
1505, 1516 -> 1505-16
1989, 1991 -> 1989-91
1914, 1918 -> 1914-8
1833, 1871 -> 1833-71
1000, 2000 -> 1000-2000
1776, 2017 -> 1776-2017
2016, 2016 -> 2016-
These dates lack significance :(
1234567890, 1234567891 -> 1234567890-1
600, 1600 -> 600-1600
1235, 1424 -> 1235-424
600, 6000 -> 600-6000
1914-18
ou1914-8
?600, 6000 -> 600-6000
?1914-8
est la Première Guerre mondiale. Donne-moi maintenant mes brownies!Réponses:
05AB1E , 16 octets
Essayez-le en ligne!
Utilise l'algorithme de Jonathan Allan.
la source
Gelée ,
1716 octetsUn programme complet prenant une liste d'années
from, to
et imprimant le résultat.Essayez-le en ligne! ou consultez la suite de tests .
Comment?
la source
[600, 6000]
apparu. Et il semble que cela n'ait pas été sous-estimé.Javascript ES6,
5957 caractèresTester:
la source
(x+'-'+y)
?x=>y=>
) pour enregistrer un octet.Dyalog APL, 29 octets
Essayez-le en ligne!
Comment?
⍺,'-'
- la première année +, -
=x←⍕⍵
- comparer la deuxième année formatée((-⍴x)↑⍕⍺)
- à la première année rembourré avec des espaces de gauche⌈\~
- annuler le résultat et marquer tous les 1 après le premierx/⍨
- prendre la deuxième année en toute position marquéela source
Rétine , 34 octets
Essayez-le en ligne! Le lien inclut des cas de test. Le groupe d'équilibrage et la limite de mot garantissent que les deux nombres sont de la même longueur avant que le préfixe ne soit mis en correspondance. Sinon, le mot limite correspond au début de la deuxième année, donc tout ce qui se passe est que la virgule se transforme en tiret.
la source
Python 2 , 102 octets
Essayez-le en ligne!
J'ai l'impression qu'il doit y avoir une meilleure façon de le faire car cela semble vraiment verbeux. Abus extrême de `` l'évaluation des variables pour que cela fonctionne car nous ne pouvons pas prendre les chaînes en entrée.
la source
Python 2, 127 octets
Je suis encore nouveau à ce sujet, donc je ne sais pas si c'est correct de placer une autre réponse dans la même langue. Comme je ne peux pas encore commenter les messages d'autres personnes, je tente ma chance ici.
Essayez-le en ligne!
Ce que je fais, c'est que je compare chaque chiffre des deux fois et si le plus grand varie, j'imprime le plus petit nombre plus le reste du plus grand.
Si quelqu'un pouvait m'aider à jouer sur la troisième ligne, j'économiserais plus de 30 octets. Je ne l'ai implémenté que pour gérer le cas de 600,6000 où les chiffres sont égaux mais pas de même longueur.
la source
Haskell , 143 octets
Essayez-le en ligne!
smallest biggest
entrée (entiers).if length x<length y then y
signifie que six
a moins de chiffres quey
la partie commune est vide. Sinon, nous stockons les chiffres duy
premier chiffre différent.la source
Python 2 ,
8988 octetsEssayez-le en ligne!
la source
Lisp commun, 120 octets
Essayez-le en ligne!
Le plus petit, le plus grand.
Non golfé:
la source
C ++,
285271 octets-14 octets grâce à Zacharý
Code de test:
la source
using namespace std;
supprimant laT
macro.