Cette question vous est posée par un jeu auquel j'aime jouer quand je suis coincé dans de longues réunions téléphoniques.
Étant donné deux fois à partir d'une horloge de 24 heures (de 00:00 à 23:59), combien d'équations mathématiques valides peuvent être générées avec toutes les heures intermédiaires en utilisant uniquement des opérations arithmétiques de base?
Contribution: deux chaînes de quatre chiffres (pas de deux-points) représentant des heures valides dans un cycle de 24 heures.
Exemples:
Pour entrée = 0000, 1300
03:26 produces: "0+3*2=6" and "03*2=6" etc.
11:10 produces quite a few, including: "1*1=1+0" and "1=1=1^0" and "1=11^0" etc.
12:24 produces: "1/2=2/4" and "1=(2*2)/4" etc.
Les opérations valides sont:
- une addition
- soustraction
- multiplication
- division (virgule flottante)
- exponentiation
- factorielle
Autres symboles autorisés
- Parenthèses
- Des signes égaux
Le code le plus court gagne.
Remarques
- Le but est de trouver le nombre d'expressions valides entre deux fois, pas le nombre de fois qui contiennent une expression valide.
- Les deux temps donnés en entrée sont inclus dans la plage de temps.
- Vous pouvez grouper les chiffres de toutes les manières possibles, donc "1223" peut être "12 23" ou "1 2 23" ou "1 223" etc. etc.
- Vous pouvez utiliser autant de parenthèses que nécessaire.
- Vous pouvez utiliser plusieurs
=
signes. Par exemple, l'heure11:11
a l'expression valide1=1=1=1
. - Si la première fois se produit chronologiquement après la deuxième fois, la plage de temps doit s'achever comme si elle passait au lendemain.
- Les numéros doivent rester dans leur ordre d'origine - vous ne pouvez pas réorganiser les chiffres.
- Lors de la mise en cluster de nombres, les zéros peuvent absolument être le chiffre le plus en avant, auquel cas, ils sont ignorés ("0303" groupé en "03 03" n'est que deux chiffres avec la valeur de 3.)
- Vous NE POUVEZ PAS utiliser le signe moins comme négation unaire. Par conséquent, "12:01" ne produit PAS "1-2 = - (01)", mais produit "1-2 = 0-1".
- Vous NE POUVEZ PAS ajouter de décimales aux chiffres. Par conséquent, "12:05" ne produit PAS "1/2 = 0,5".
- Aucun enchaînement de factorielles - un chiffre peut être suivi d'au plus un "!", Pas plus, sinon, plusieurs fois, il y aurait des solutions infinies. Ex: "5!" est valide mais "5 !!" n'est pas valide.
code-golf
expression-building
clock
nobillygreen
la source
la source
0000 1300
, les équations doivent-elles être dérivées du décompte0000
et1300
être incluses dans celui-ci?Réponses:
Python3, 363 caractères
Puisqu'aucune réponse n'est donnée jusqu'à aujourd'hui, je remets ce que j'ai obtenu. Malheureusement, le bloc try / except est trop gros, je n'ai pas trouvé de moyen d'y sauvegarder les caractères. C'est vraiment difficile avec les boucles imbriquées là-bas, je ne pense pas que tout puisse être fait avec des listes, mais peut-être que quelqu'un peut me dire comment.
Cependant, j'ai moi-même limité le défi de n'utiliser que les mathématiques de base '+ - * /' et aucune parenthèse.
Mon code complet (espérons quelque chose d'explicatif) sur ce CodeGolf peut être trouvé sur mon pastebin .
la source