Si vous pensez que cela pourrait être amusant, mais trop de travail, pensez à participer à ce défi beaucoup plus petit.
Un peu de plaisir (et peut-être de frustration!) Pour 2016 ... "Le puzzle de l'année" de Dyalog . Prendre plaisir!
L'objectif
Rechercher des expressions Dyalog APL ( téléchargement ) (d'autres langues sont autorisées, voir Éligibilité ci-dessous) impliquant exactement les chiffres 2 0 1 6 dans cet ordre pour égaler les nombres 0 à 100. Par exemple:
20=16
×2016
2⌊016
2+0+1*6
...
L'objectif est d'utiliser le moins de caractères possible dans chaque expression (le nombre minimum de caractères pour une expression est de 5 - les quatre chiffres 2 0 1 6 et une seule fonction / opérateur primitif).
Les règles
- Chaque expression doit contenir les chiffres 2 0 1 6 (dans cet ordre) et aucun autre chiffre. Les constantes et variables prédéfinies ne sont pas non plus autorisées.
- En plus des quatre chiffres 2 0 1 6, seuls les symboles et noms intégrés, les parenthèses / accolades, les espaces, les signes moins élevés et les décimales peuvent être utilisés. Les expressions résultantes doivent être déterministes (c'est-à-dire donner le même résultat sur des évaluations répétées). Pour les non-APL, les fonctions / opérateurs avec un nom sont également autorisés; mêmes règles qu'ici .
- Supposez tous les paramètres par défaut pour votre langue. Pour Dyalog APL, cela signifie
⎕ML
et⎕IO
sont tous les deux 1 et⎕PP
10. - Chaque entrée comprenant des expressions correctes pour tous les nombres de 0 à 100 inclus sera évaluée selon le nombre de caractères utilisés par ces expressions à l'exclusion des espaces redondants (minimum 505 pour les 101 expressions).
Admissibilité
Tout le monde peut entrer. Vous pouvez répondre dans n'importe quelle langue, mais seules les réponses APL seront prises en compte pour l'acceptation. Si vous utilisez une autre langue que APL, vous pouvez utiliser des extraits, des programmes, des fonctions, etc. comme alternatives aux expressions, et vous pouvez imprimer, laisser le numéro dans un emplacement de mémoire accessible, ou renvoyer le résultat, tant que votre code est directement évalue le nombre souhaité comme n'importe quel type de données numériques standard pour votre langue.
Date de clôture
30 novembre 2016.
Prix
- Faites accepter votre réponse
- Soyez immortalisé dans le Hall of Fame de Dyalog 2016!
Soumettre votre inscription
Après le 30 novembre 2016, j'accepterai la réponse la plus courte et soumettrai votre réponse, en votre nom, au Temple de la renommée 2016 de Dyalog.
FAQ
- Est
J
(par exemple , 37 =⌈⍟!20J16
) permis? - Non: en plus des quatre chiffres 2 0 1 6, seuls les symboles et noms intégrés, les parenthèses / accolades, les espaces, les signes moins élevés et les décimales peuvent être utilisés.
- La sortie sous forme de chaîne est-elle acceptable?
- Non: égal les nombres 0 à 100.
- Chiffres physiques ou chiffres de données?
- Chiffres de données, selon OP: mêmes règles qu'ici , où l'un des exemples contient
LOG10(
. - Est-il
a+16+a←20
permis d' affecter des variables puis de les utiliser dans le cadre de l'expression (par exemple 56 = )? - Oui, mais vous ne pouvez pas utiliser une affectation d'une expression dans une autre.
J'ai la permission écrite explicite de publier ce défi ici de l'auteur original de ce défi. N'hésitez pas à vérifier en suivant le lien fourni et en contactant l'auteur. J'ai donné à l'auteur du concours d'origine le lien vers cette page dans la minute où je l'ai publiée, afin qu'il puisse vérifier si je soumets la réponse de quelqu'un comme étant la mienne.
⎕ML
et⎕IO
(supposée être1
) serait-elle acceptable?Réponses:
Gelée, 686 octets
J'ai écrit environ 50 d'entre eux, puis généré automatiquement le reste en ajoutant
Ḥ
(× 2) et‘’
(± 1) selon les besoins. Je les améliorerai plus tard!la source
201ÆCo6
. Je ne pense pas que vous puissiez utiliserṾ
(qui a été mis en œuvre en février), mais20|16Ḥ‘Ḥ
et20|16‘ḤḤ’
sont également courts.Ḥ
plus de‘’
- 46, parmi quatre autres nombres, aurait dû être un caractère plus court. Je l'ai remplacé par2016½Ċ‘
ce qui est aussi long que le vôtre.Hexagonie , 888 octets
D'accord, d'abord quelques règles de base pour l'Hexagonie, au cas où quelqu'un voudrait battre ceci:
2|016
pour 22), mais cela semble le plus dans l'esprit du défi.Voici donc la liste. J'ai testé la plupart d'entre eux mais pas tous (certains sont des modifications triviales d'autres), donc j'espère que je n'ai fait aucune erreur:
Je suis devenu un peu paresseux vers la fin, donc je suis sûr que ce n'est pas optimal. Cela pourrait être intéressant (et possible) de les forcer brutalement.
la source
J,
1041... 838 octets981961952860859Je suis devenu un peu paresseux à la fin, mais ça devrait être plus fixe que moins.
Je ne pense pas que je dépasserai jamais Hexagony, mais on ne sait jamais!battre l'hexagonie! 9 octets enregistrés grâce à Zgarb! et bien plus encore à Lynn!Faits saillants et notes
J'ai beaucoup utilisé des nombres premiers dans ce domaine. En fait, j'ai utilisé la fonction
p:
(le Nième nombre) 37 fois dans cette chose.90 a été fabriqué à l'aide d'une fourchette. Yay! C'est approximatif:
Traduit comme
54 utilise un ravel de mise en forme!
Est équivalent à
la source
!20-16
54:<.^20-16
55:>.^20-16
97:p:!20-16
+:p:-2-016
(4 octets plus court)?2]01+6
, 8 peuvent être2%~016
et 12 peuvent être2*01]6
.JavaScript, 1021 octets
Correction et enregistrement de deux octets grâce à Charlie Wynn et ETHProductions .
la source
2-~01+6
comme 10 et-~!2016
comme 1.JavaScript (ES7), 836 octets
Tout devrait fonctionner dans n'importe quel navigateur, sauf 81, 88 et 97, qui utilisent le nouvel
**
opérateur.Presque tout ici a été fait à la main. J'ai travaillé sur un brute-forcer pour améliorer tout ce qui peut être amélioré. Actuellement, il a économisé 103 octets sur divers éléments.
Brute-forcer
Ce n'est pas le plus joli code, mais cela ne semble pas avoir d'importance autour de ces parties.
AVERTISSEMENT: ne vous exécutez que si vous êtes prêt à geler votre navigateur / moteur pendant quelques minutes. Personne n'aime calculer 7 boucles imbriquées.
la source
PowerShell v3 +,
15751499 octets100% joué au golf manuellement - aucun programme de force brute ou autre aide enrôlé.
Je pense que 1500 est peut - être à portée de mainSub-1500 atteint! Voyons voir comment je peux faire pour réduire cela. (NB - Cela n'a été testé qu'en v4, mais devrait fonctionner en v3 et v5 sans modification. Ne fonctionnera pas en v2 ou v1 car ces versions n'avaient pas d'opérateurs de décalage au niveau du bit.)
Les points clés sont signalés par
##.hashes.##
dans le code ci-dessus.# 11 est la première affectation à la variable
$a
. Contrairement à d'autres langages, les variables n'ont pas besoin d'être pré-initialisées pour l'analyse, et ce n'est que pendant l'exécution que les variables sont résolues. Puisque le($a=01)
est entouré de parens, il est évalué en premier et donc le second-$a
est équivalent à-1
. Ceci est utilisé assez largement à partir de maintenant, et c'est l'une des plus grandes choses en réduisant le nombre de bytes.# 17 montre la première utilisation de
!
Boolean non. Dans PowerShell, les types sont castés de manière assez lâche, donc si le cast peut être implicite, cela fonctionnera. Ici, nous utilisons le fait que!!20
equals!$false
, qui est$true
, qui peut être implicitement converti en[int]1
, ce qui se traduit par17
. Ceci est utilisé plusieurs fois pour en obtenir un autre1
ou pour en faire passer une partie0
.# 22 Présente l'
0x
opérateur de conversion hexadécimal, se transformant ici0x16
en22
. Cependant, comme0x16
c'est le seul nombre que nous pouvons obtenir, son utilité est limitée.# 23 a l'
-bor
opérateur, pour "binaire ou." Cependant, étant donné que les deux-bor
et-bxor
ont une priorité plus faible que les simples opérateurs arithmétiques, leur utilisation nécessite généralement des parenthèses, ce qui limite considérablement l'utilité. C'est le seul que j'ai trouvé où il est plus court d'utiliser le binaire ou l'opérateur (j'ai éliminé l'-bxor
opérateur de 22).# 30 est la première fois que l'
-bnot
opérateur est présenté. Il s'agit de l'opérateur "non binaire", et fonctionne de manière similaire à~
(par exemple) JavaScript. Cependant, il a généralement besoin de parens, car la négation s'affichera--bnot
et entraînera une erreur d'analyse / syntaxe, et comme il s'agit de cinq caractères par rapport à un pour~
, il est utilisé avec parcimonie.# 39 est la première utilisation de nos opérateurs de décalage binaire,
-shl
et-shr
. Ceux-ci sont similaires à<<
ou>>
dans d'autres langues, mais sont explicitement dyadiques, ce qui signifie que nous avons besoin d'un nombre des deux côtés pour qu'ils fonctionnent, ce qui limite leur utilité dans ce défi. De plus, leur priorité n'est pas explicitement indiquée dans la documentation, mais les tests montrent qu'ils sont inférieurs à la simple arithmétique, ce qui signifie que les parens doivent être utilisés généreusement, de sorte qu'ils ne font pas autant d'apparence que dans les autres réponses linguistiques.la source
CJam,
792791 octetsJe suis devenu paresseux à la fin, beaucoup d'entre eux ont fini par être des incréments et des décrémentations (101, c'est beaucoup!), Bien que je ne sois pas sûr qu'il existe un autre moyen pour quelques-uns des nombres. Il reste encore beaucoup de temps pour jouer au golf si j'en ai besoin.
Autour du # 40 il y a des visages clinquants;)
la source
Mathematica,
2912250222822180 octetsPourrait certainement être joué plus loin. Résout principalement quelques équations de Frobenius distinctes, ce qui donne des solutions de longueur O ( n ). Le reste a été généré par mon brute-forcer.
la source
c
à16
quand le nombre est pair et grand? Comme pour 96, etc. Vous ne savez pas comment fonctionne votre solveur d'équations, mais l'utilisationa=20
devrait également être utile pour plusieurs d'entre eux?Dyalog APL (Ceci est une blague, veuillez ne pas soumettre), 25 957 octets.
Oui, c'est une entrée de blague, nous avons besoin d'une solution APL, même si elle est complètement horrible. Fonctionne en incrémentant
≢⍬
(0
)n
fois. Je ne veux dévoiler aucun secret de ma soumission.De toute évidence, pourrait être joué beaucoup plus.
la source
JavaScript, 5244 caractères
Pourrait probablement être joué beaucoup plus loin. Testez dans la console Chrome. J'ai un peu abandonné à 10 ans.
la source
Java 7, 1 083 octets
Pour le nombre d'octets, je n'ai compté que les expressions elles-mêmes entre les parenthèses. J'ai donc exclu les
System.out.println
s etclass
. Y compris ceux-ci, ce serait 3 049 octets .PS: Je ne suis pas tout à fait sûr si l'int-cast pour
72
est valide. Bien qu'il ajoute quand même 5 octets ..Code non testé et testé:
Essayez-le ici.
la source