Vous devez faire un jeu trop bas --- trop haut (TLTH) dans le code le plus court (en octets)
Regles du jeu:
- L'ordinateur choisira un nombre aléatoire hors de la plage entière (-32768..32767).
- Vous allez maintenant penser à un nombre et le saisir.
- L'ordinateur vous dira si votre numéro est inférieur (
TOO LOW
) ou supérieur (TOO HIGH
) au numéro choisi. - Lorsque vous devinez le nombre, l'ordinateur devrait s'afficher
Congrats! You found the number!
.
Règles du code:
Ne pas utiliser les caractères
T
,O
,L
,W
,H
,I
etG
(ni minuscule ni majuscules) dans des chaînes ou caractères.
Par exemple:tolower(T); // Acceptable cout<<"T"; // Unacceptable char ch='T'; // Unacceptable
Supprimez 300 octets si votre code peut afficher les règles du jeu avant de démarrer le jeu.
Supprimez 50 octets si votre code peut compter le nombre de tours et afficher le nombre de tours effectués à la fin du jeu comme ceci:
"Congrats! You found the number in n turns!"
où n est le nombre de tours effectués, au lieu de
"Congrats! You found the number!"
Supprimez 25 octets de votre score si votre code peut indiquer à l'utilisateur que le nombre que vous entrez est hors de la plage entière.
Par exemple:Enter the number: 40000 Sorry! This number is out of range Please Enter the number again:
Supprimer 25 octets Si votre code prend le nombre aléatoire, pas à partir d'une fonction aléatoire intégrée.
Supprimer 10 octets Si votre code affiche "félicitations" en couleur (choisissez n'importe quelle couleur sauf le blanc par défaut).
Règles de soumission:
Ajoutez un titre avec le nom de votre langue et le score avec tous les calculs de primes et leurs explications.
Postez votre code golfé et non golfé.
Gagnant
- La réponse avec le moins d'octets l' emporte.
- S'il y a égalité, la réponse avec le plus de votes l'emporte.
- Le gagnant sera choisi après 5 jours.
EDIT : Veuillez afficher la sortie de votre code.
EDIT-2 : Vous pouvez ignorer la règle-1 pour les règles-2,3 et 4 dans les règles de code
Bonne chance :]
WhileURong(USayNumbr;ISayBigrOrSmalr)
Réponses:
JavaScript (-210 points (
190
octets -300
(pour les règles) -50
(pour le nombre de suppositions) -25
(pour ne pas utiliser de source de nombres aléatoires intégrée) -25
(pour vous dire si l'entrée est hors de la plage d'un signe)16
-bit entier) ):Golfé:
Code complet (bien formaté):
Production:
la source
0
. :-( De plus, ne devrait-il pas y avoir d'espace dansTOO LOW
/TOO HIGH
?Perl 5.10+:
159144 octets - 350 = −206 pointsEdit 2: Avec la récente modification des règles qui me permet d'utiliser n'importe quel littéral de chaîne pour le message "félicitations", je peux enregistrer 15 octets à partir de ma solution originale de 159 octets. Il n'y a rien de particulièrement nouveau ou intéressant dans le nouveau code ci-dessus par rapport à l'ancien code (je viens de me débarrasser de la
p
fonction et d'appelersay
directement à la place), donc le reste de cet article décrira le code original, illustré ci-dessous:Ouais, j'abuse l'enfer de la règle 1. Qui a besoin de chaînes, quand vous pouvez avoir des mots nus ? ;-)
Exécutez avec
perl -M5.010
pour activer la fonction Perl 5.10+say
(ou remplacez le corps de lap
fonction parprint join$",@_,$/
un coût supplémentaire de 5 octets).Scores bonus:
Le code ne contient aucun littéral de chaîne au sens strict, donc je dirais que la règle 1 n'est, techniquement, pas violée. L'astuce est que, en Perl, sans
use strict
, tout identifiant qui ne correspond pas à un mot-clé ou un sous-programme de langue connu sera simplement évalué à son propre nom. La fonctionp
prend alors simplement une liste de mots et les imprime, séparés par des espaces.Exemple de lecture:
Edit: Oh, c'est vrai, les règles disent que je dois aussi publier une version non golfée du code, alors voilà. Techniquement, c'est "dé-golfé", car je compose habituellement mes programmes de golf de code sous une forme plus ou moins complète depuis le début, et il peut parfois être difficile de supprimer toutes les optimisations "golfiques" sans changer fondamentalement la façon dont certaines parties du programme de travail. Pourtant, j'ai au moins essayé d'ajouter des espaces, des commentaires et des noms de fonction / variable plus significatifs:
Ps. Comme alternative, si le simple fait d'utiliser des mots nus au lieu de chaînes vous semble trop trompeur, voici une solution de 182 octets qui n'utilise pas les lettres
TOLWHIG
même dans les mots nus (mais les utilise dans un opérateur de translittération). Il obtient toujours les mêmes bonus, pour un score total de 182 à 350 = −168 points :La sortie est exactement la même que ci-dessus. Selon les règles (originales), j'utilise les lettres
t
eti
pour imprimer les règles, car c'est autorisé; cependant, l'élimination de ces utilisations ne coûterait que deux octets supplémentaires. Inversement, rendre toutes les sorties en majuscules (qui, sur la base des commentaires ci-dessus, semble être autorisé) me permettrait d'économiser trois octets.la source
def method_missing *args;args.join' ';end
.Python 2: -80 points (270-300-50)
Le score est de 270 caractères, moins 300 pour afficher les instructions, moins 50 pour afficher le nombre de suppositions dans les "félicitations!" chaîne, pour un total de 80 points négatifs.
Version non golfée de la boucle, avec des chaînes non échappées:
La
cmp
fonction intégrée renvoie 0 si les valeurs sont égales, -1 si la première est plus petite et 1 si la première est plus grande. J'utilise la valeur pour indexer un tuple de chaînes, puis à nouveau comme condition de sortie de la boucle. L'indexation d'une séquence avec un indice négatif (comme -1) compte à partir de la fin de la séquence, plutôt qu'à partir du début.J'ai été cruellement tenté de sauter les importations et de simplement utiliser
4
comme numéro aléatoire, conformément à XKCD 221 (cela pourrait-il bénéficier du bonus de -25 caractères?).Exemple d'exécution (complet avec une erreur, où je ne peux pas faire de calculs négatifs):
la source
g
est zéro et lawhile
boucle se termine.You can ignore Rule-1 for Rules-2,3 & 4 in Code Rules
JavaScript 293, -300 (règles) - 50 (affichage des tours) - 25 (avertissement de portée) - 25 (pas de fonction aléatoire) = -107 (nouveau score)
r=new Date%65536+~(z=32767);n=x="";for((A=alert)("\107uess my number, \111 \147\151ve feedback");(x=prompt())!=r;A(0>(x-~z^x-z)?"\164\157\157 "+(x>r?"\150\151\147\150":"\154\157\167"):"Ran\147e: "+~z+" - "+z))n++;A("C\157n\147ra\164s! Y\157u f\157und \164\150e number \151n "+ ++n+"\164urns!")
Je dirais que selon les conventions RVB, le noir est une couleur, mais ce serait un peu tricher ...
Oh, et puis-je ajouter, pas de violation de la règle # 1 non plus!
Sortie dans une série d'alertes et d'invites
Code non golfé:
la source
A=alert;
et en remplaçant tous lesalert
parA
. Et un de plus si vous déplacez l'alerteA(0>(x...
après le point-virguleprompt())!=r;)n++1
.feedback if too high/low
qui utilise actuellement 84 caractèresi give feedback
(ce qui ne nécessiterait que\151 \147\151ve feedback
24 caractères pour enregistrer 60 caractères .n++
boucle for dans lax=prompt(n++)
pour éviter d'avoir à faire+ ++n+
dans l'alerte finale. Cela économiserait 3.Javascript, 324 octets, score -76
[Mis à jour en raison de changements de règles]
Note totale: -76
Golfé:
Permet de débloquer ce gâchis.
Tout d'abord, correctement identifié (mais ce n'est toujours pas très bon avec du code obscurci):
Deuxièmement, renommer les identificateurs:
Ainsi, la fonction de décryptage obtient tous les caractères entre ASCII 33 (
!
) et ASCII 58 (:
) et ajoute 32, les convertissant en caractères de la plageA-Z
.Permet de dé-golfer davantage le code en décryptant toutes les chaînes:
Et enfin, permet de déplacer certaines instructions à d'autres endroits, de remplacer la longue chaîne ternaire par des ifs et des elses, de joindre des chaînes de concaténation et de simplifier les calculs, pour augmenter la lisibilité:
Échantillon:
la source
C - 272 caractères - 300 - 50 - 25 = -103
Code golf:
Non golfé:
Production:
la source
C: 237 - 300 - 50 - 25 - 25 - 10: -173 points
-300 pour les règles, -50 pour afficher le nombre de suppositions, -25 pour ne pas utiliser de générateur de nombres aléatoires intégré, -25 pour le message hors plage et -10 pour colorer le message de félicitations.
Non golfé:
Exemple d'exécution:
La dernière ligne apparaît en rouge.
la source
bash, -137
But
273 (octets) - 300 (règles) - 50 (nombre d'essais) - 25 (avertissement OOF) - 25 (PRNG personnalisé) - 10 (couleur)
Version golfée
Notez que la dernière ligne est un commentaire, elle ne contient donc pas de chaîne ou de littéraux de caractères.
Version non golfée
Exemple de sortie
La dernière ligne est imprimée en vert.
la source
C #: -30 points
Golfé :
Pour l' exécuter, mettre dans un fichier (code.cs) et exécuter avec scriptcs sur la ligne de commande:
scriptcs code.cs
.Non golfé : élargi les noms de variables en quelque chose de plus facile à comprendre et changé les lettres hexadécimales en vraies lettres.
Exemple de sortie disponible ici .
la source
T
,O
,L
,W
,H
,I
etG
(ni minuscule ni majuscules) dans des chaînes ou de caractère. »T
,O
,L
... avec\x54
,\x4F
,\x4C
... et que tu vas bien.C ++ 505 + (-300-50-25-25) = 105
-300: Instructions
-50: Affichage du nombre de tours
-25: Ne pas utiliser la fonction aléatoire
-25: avertir l'utilisateur d'une entrée hors de portée
GOLFED
NON GOLFE
PRODUCTION
la source
C, 183-300-25 = -142
183 octets -300 pour les règles -25 pour ne pas utiliser une bibliothèque aléatoire
version non golfée:
échantillon:
la source
"TOO HIGH"
et les"TOO LOW"
deux contiennent des caractères illégauxTOLWHIGtolwhig
.TOO LOW
autorisé ?J - 190 caractères -300-50 = -160 pts
Explication (rappelez-vous que J se lit de droite à gauche):
'WhileURong(USayNumbr;ISayBigrOrSmalr)'1!:2]2
- Imprimez les règles.32767-?2^16[
- Lancez la valeur de retour, puis générez un nombre aléatoire compris entre 0 et 2 ^ 16-1 inclus. Ensuite, ajustez-le sur la plage -32768..32767 en le soustrayant de 32767.1>:@]^:(...)^:_~
- Lex u^:v^:_ y
motif est un peu comme une boucle while.x
reste constant ety
est muté à chaque exécution deu
. Cela continue jusqu'à ce quex v y
renvoie 0 oux u y
n'entraîne aucune modificationy
. Le~
permute les deux arguments, de sorte que cex
sera le nombre aléatoire ety
commencera à 1. Notreu
est>:@]
, qui incrémente ce 1 et le renvoie, donc il agit comme un compteur et lax u y
condition de terminaison ne peut jamais se produire.[:".1!:1@1:
- Prenez le compteur et ignorez sa valeur en utilisant le chiffre 1 à la place (1:
). Lisez une ligne d'entrée (1!:1
) à partir du clavier (descripteur de fichier 1) et exécutez-la (".
). Cela permet à J, dont le signe négatif est normalement_
, de prendre des nombres sous la forme-n
(s'évalue comme la négation appliquée au nombren
).]`(...)@.*@-
- Prenez la différence entre le nombre aléatoire d'avant et la supposition (-
). Maintenant, nous sélectionnons l'action suivante selon que cette différence est nulle (@.*
). Si c'est le cas, retournez (]`
) ce 0 comme résultat pourx v y
, afin que l'exécution se termine, et la boucle while entière renvoie le compteur. Autre...71+13 8 8 _39,(5 8 16;1 2 0 1){::~0&>
- Renvoie le tableau5 8 16
si le nombre est négatif et1 2 0 1
s'il est positif. Ensuite13 8 8 _39
, ajoutez et ajoutez 71 à tout, nous avons donc soit84 79 79 32 76 79 87
ou84 79 79 32 72 73 71 72
.1[2:1!:2~a.{~
- Transformez ces nombres en caractères ASCII en indexant l'alphabeta.
avec eux. Imprimez-les ensuite avec1!:2
(à l'aide de la poignée de fichier 2) et retournez 1 comme résultat dex v y
.'Congrats, you found the number in ',' turns!',~":
- Lorsque la boucle se termine, elle renvoie le compteur. Convertissez-le en chaîne avec":
et placez-le entre les chaînes'Congrats, you found the number in '
et' turns!'
.Exemple de sortie:
la source
JavaScript -40
335-300 (règles) - 50 (nombre de tours) - 25 (hors de portée)
Je ne vais pas gagner, mais une façon amusante d'obtenir les lettres, je pense.
Golfé
Non golfé
Exemple de sortie
la source
APL (Dyalog) (157-300-50 = -193)
(Oui, ceux-ci comptent comme octets, le jeu de caractères APL tient dans un octet.)
J'ai revendiqué "afficher les règles du jeu" et "compter le nombre de tours".
Exemple d'exécution:
Non golfé:
la source
Pogo: -95 (255 - 300 - 50)
Si le nombre est 10:
Le nombre de caractères est basé sur le code avec tous les espaces supprimés.
Notez que Pogo n'est pas une fausse langue. Je l'ai créé et j'ai écrit un compilateur et un IDE ici: https://github.com/nrubin29/Pogo
la source