introduction
Mauvaises nouvelles les gars - vous avez la détention. Votre professeur d'anglais ne comprend pas ce site et souhaite que vous "cessez de faire des mathématiques avec vos dohickey numériques, c'est un cours d'anglais!"
Elle vous a condamné à écrire son dicton préféré au tableau 25 fois, ce qui donnera un total de 100 lignes au tableau.
The eighteen-hundreds were a time for rum.
The nineteen-hundreds were a time for fun.
The two-thousands are a time to run
a civilized classroom.
Heureusement pour vous, vous êtes un lecteur assidu (sans parler d'un expert en code-golfeur)! Vous avez lu un truc qui pourrait vous aider facilement.
(Foxtrot par Bill Amend)
Malheureusement pour Jason, ça n'a pas marché. Mais vous avez une meilleure idée! Puisque votre professeur d'anglais pense que vous faites des maths, si vous laissez tous les chiffres en dehors de votre programme, cela pourrait marcher! Vous souhaitez également que votre programme soit aussi bref que possible car vous êtes un étudiant paresseux et vous ne voulez pas écrire beaucoup au tableau.
Ecrivez un programme qui respecte les règles suivantes:
- Votre programme doit imprimer les 4 lignes ci-dessus 25 fois. Les lignes doivent être sorties dans cet ordre, en répétant. Totale exactement 100 lignes de sortie (une nouvelle ligne finale à la toute fin ou une nouvelle ligne principale au tout début est acceptable).
- Vous ne pouvez pas utiliser les caractères
0123456789
. Votre professeur est perturbé par les mathématiques et vous appellera! - Vous pouvez utiliser des importations et des bibliothèques externes sans compter les importations. Votre professeur d'anglais ne connaît pas la programmation. Jason aurait pu économiser beaucoup de travail en n'écrivant pas
#include <stdio.h>
et vous ne voulez pas commettre les mêmes erreurs! - Marquez votre programme en
byte
nombre. Le score le plus bas gagne!
Réponses:
CJam,
109107106104103 octetsCe qui précède est un vidage xxd réversible.
Essai
Vous pouvez générer et exécuter le code ci-dessus en l'exécutant dans l' interpréteur en ligne :
Pour voir le code généré (sans l'exécuter), supprimez le dernier
~
.Pour compter le nombre d'octets (un caractère est un octet dans ISO-8859-1), remplacez le dernier
~
par a,
.Version imprimable (122 octets)
Après avoir poussé la chaîne (S), les opérations suivantes sont exécutées:
Moar jouer au golf
Après avoir poussé la chaîne non imprimable (U), les opérations suivantes sont exécutées:
Cela pousse la chaîne de la version imprimable. Le reste du code fonctionne comme avant.
la source
~
par,
pour vérifier.]:+~
cela a fonctionné. Pourquoi ne pas simplement ajouter cela à votre code?JavaScript (ES6) 164
Testez dans la console FireFox / FireBug.
la source
Python:
188 173 160153Je ne python pas beaucoup, mais cela me semble assez court.
Edit: Donc je me suis trompé, ce n'était pas court du tout! Merci pour l'aide dans les commentaires: D
la source
\
en\n
raison de votre fuite ...b
dansprint
: la%
priorité est plus grande que*
.CJam,
151 140 135 132 130128 octets (Tweetable)Essayez-le ici
Je suis en mesure de réduire ce nombre à 110 octets en le convertissant en unicode, mais comme cela ne bat pas l'autre solution unicode, je préférerais ne pas le mettre :)
la source
:D
émoticône là-bas?! Envoyez-vous des textos à vos amis pendant votre détention? Allez au bureau du directeur!T
alias.\nThe
, puis supprimer la ligne supplémentaire générée dès le début de la chaîne de sortie (mon cjam-fu n'est pas assez bon pour savoir si vous pouvez le faire facilement)PHP, 0 octet
Pour exécuter ce code, vous devez importer une bibliothèque appelée
data://text/plain,<?php...classroom.\n";
avec ceci:Et vous devez avoir
allow_url_include
activé dans votrephp.ini
.Plus de chiffres ou d'extensions, grâce à Dennis.
la source
require_once "data://text/plain,The eighteen-hundreds...";
, ce qui ne nécessite pas sh , n'utilise pas de chiffres et reste 0 octets.Rubis,
185180176 octetsEDIT: interpolation de chaîne, merci @britishtea
C'est mon premier golf, et je ne suis pas vraiment un rubiste (mais j'adore Ruby). En tout cas, ça y est (raccourci, suggestion de Doorknob).
la source
s.split.size.next
enregistre 5 caractères (vous n'avez pas besoin de spécifier l'espace sur lequel se séparer).(s.split.size+1).times
plus court d'un octet?Java
249231230222Ma première réponse! Pourquoi ne pas commencer par utiliser le langage que je connais si bien.
Ungolfed
la source
public
votre classe et le réduireargs
à un seul personnage. Vous pouvez également le fairea++<':'
au lieu de l'incrémenter séparément. Puisque l'OP ne compte pas les importations, vous pouvez économiser un peu plus avecimport static java.lang.System.*;
, alors vous n'avez pas besoin d'écrireSystem.
plus tard (là où ça compte). En faisant cela, je suis descendu à environ 230. Si vous ne l'avez pas déjà fait, vous pouvez jeter un coup d'œil à la page des astuces Java .C 171
Au début, j'ai essayé la version simpliste (189 octets), qui était meilleure que l'autre solution C ...
que j'ai optimisé un peu plus tard ...
la source
char *
.a
parce qu'il vaut par défautint
, ce qui peut accepter unechar
valeur. Il n'aime pas àb
moins que je l'appelle unchar[]
si. VX, quel compilateur utilisez-vous?b
estint
trop, mais il contient le pointeur sur le littéral de chaîne. C'est complètement ok dans GCC (j'ai sur ma machine 4.8.2).for(a='a';++a<'z';)
JavaScript, ES6,
174 172154 octetsUtiliser le
replace
truc de @ edc65 . Merci!Fonctionne uniquement dans les dernières versions de Firefox (34 et plus) en raison de l'utilisation de chaînes de modèle.
la source
BrainFuck ( 1 597 caractères )
Cela peut encore être joué si quelqu'un est intéressé.
Vous pouvez tester cela et vérifier qu'il donne le bon résultat tout en respectant toutes les règles.
la source
Perl - 145
Je suis heureux de voir autant de réponses! Voici une solution Perl.
la source
Comme elle déteste tellement les mathématiques, pourquoi pas Mathematica (177)
la source
Javascript ES6,
198193 octetsVotre professeur ne veut pas de chiffres, mais comme ils sont professeurs d’anglais, ils n’ont aucune idée de ce qu’ils veulent
Math.floor(Math.exp(Math.PI)+Math.E)
dire.Plus lisiblement:
Doit être exécuté dans le dernier firefox
la source
with(Math)alert("long string here".repeat(exp(PI)+E|[]))
(q='aaaaa'.length)*q
"\x18".charCodeAt()
:! (codez la flèche vers le haut et vous économiserez une tonne!)Javascript -
178 octets176 octetsMon premier golf, en pensant que je tenterais le coup avec des opérateurs un peu difficiles, n’a pas été aussi réussi que prévu, mais bon!
Depuis que je suis déjà en détention, et évidemment j'ai du mal à me comporter ... Javascript - 71 Bytes
Celui-ci me causera probablement plus de problèmes, mais si je me suis déjà retrouvé en détention ET si je prévois de tromper ma détention, il me manque apparemment un bon jugement sur la manière dont je devrais me comporter en classe. Peut-être que si je peux en mettre un sur mon enseignant, je peux en avoir un sur tous les autres golfeurs.
Rapide! Utilisateurs de Chrome / IE 11 / Firebug, ouvrez MAINTENANT vos consoles et essayez-les.
(S'il vous plaît ne me faites pas trop mal, je pensais que c'était drôle)
la source
C # -
229216 octetsusing
FTW gratuit !Alternative, même nombre d'octets (plus d'
using
abus, cependant)la source
a
':'-'!'
== 25), ce qui est plus court quea.Length
, et permettra d’être inclus comme vous le suggérez. (Alternativement, faites comme les autres réponses, et faites une boucle entre!
et:
, c'est drôle, nous avons tous choisi les mêmes caractères)Befunge-93,
268260256 (taille de la grille: 72x6 = 432)C’est la première fois que je joue au golf, j’ai donc décidé d’essayer un langage qui n’avait pas déjà été fait pour résoudre ce problème, car je n’ajouterais rien sinon. Comme il est compatible avec Befunge-93 (s’intègre dans une grille 80x25 et n’utilise que des instructions Befunge-93), il devrait également fonctionner avec Befunge-98. Juste au cas où, j’évitais également que le pointeur passe sur des caractères autres que des caractères autres que l’espace. Je ne me souvenais pas si la spécification définissait réellement ces caractères comme des no-ops, et je n'aurai aucun démon nasal dans mon code.
Vous ne pouvez pas vraiment ungolf code Befunge. L'essentiel à noter ici est que Befunge place les caractères dans la pile en tant que valeurs ASCII, ce qui rend relativement simple la référence à des nombres sans les référencer littéralement. le
"K"
chiffre en haut à gauche est 75, indiquant le nombre de répétitions multiplié par le nombre de clauses "les" par répétition; J'utilise le module et d'autres astuces sur (des copies de) ce numéro pour déterminer quel chemin emprunter à travers l'impression à chaque remise.::-
est un bel idiome pour zéro, utile pour les chaînes à terminaison zéro; Je l'utilise deux fois ici.Parfois, le pointeur doit passer par un endroit où je définis une chaîne, d'où le choix spécifique des caractères utilisés pour obtenir certains nombres à certains endroits.
La bonne chose à propos de beaucoup d’interprètes de Befunge est que vous pouvez regarder le pointeur fléchir autour de la grille, ainsi que voir quelles valeurs sont dans la pile. De cette façon, vous pourrez voir comment le programme fonctionne vous-même, plus ou moins! Je recommanderais d'utiliser http://befungius.aurlien.net/ si vous n'avez pas votre propre interprète Befunge préféré.
Cela peut probablement être réduit un peu (ou beaucoup) plus. S'il vous plaît donnez-moi des commentaires! Si je dois fournir une meilleure explication, quelqu'un me le fera savoir. Je suis nouveau à cela.
Edit - supprimez quelques octets en supprimant la redirection inutile vers la dernière ligne à la fin du programme (en plaçant simplement
@
où se trouvait^
auparavant).Une autre édition - rasé quelques octets supplémentaires dans divers endroits, principalement avec des ruses. (A également ajouté la taille de la grille, comme cela semble être la tendance avec les réponses Befunge.)
la source
re a time
quelque part?#
d'un bout de ligne pour sauter le caractère à l'autre extrémité (dans CCBI , par exemple, le#
saute l'espace infini entre lui et le caractère à l'autre extrémité), ce qui rompt ce programme. Je n'ai pas pris la peine de revenir et de corriger cette soumission en gardant cela à l'esprit.1
chiffres, qui ne sont pas autorisésPyth 135
136 140Notez l'espace de fuite.
Utilise à peu près la même astuce que @Geobits et ses amis commentateurs dans la réponse en Python pour construire la chaîne. Maintenant utilise également une partie de cette réponse .
Ceci utilise la variable intégrée
G
, qui contientabcdefghijklmnopqrstuvwxyz
et obtient une longueur inférieure à sa longueur pour produire les 25 sorties.la source
Ruby -
152141http://repl.it/2Om/6
la source
String#*
pour répéter les lignes 25 fois au lieu deInteger#times
.puts"hi"
légal).Python, 165 octets
Cela a très bien fonctionné que la longueur de h soit 25, ce n'était pas intentionnel. =)
la source
Python 2 - 143
Une réponse idiote:
Notez que le nombre total est 162. J'ai laissé de côté tous
from this import i
.Utilise des substituts similaires à ma stratégie pythique, mais je ne pouvais pas m'empêcher de poster ceci après avoir découvert l'hilarité d'importer à partir de cela :)
la source
from this import i
! Comment avez-vous su à ce sujet?import this
. Puis j'ai pensé: "Que pourrait-il y avoir d'autre dans lethis
module?" Alors j'ai appelédir(this)
. Et voilà, avec un dictionnaire, une ficelle"!"
PHP (
175157156 octets; 152 avec unix EOF):Pas la solution la plus golfée, mais fait sûrement le travail et est plus petit que certaines tentatives.
Voici le code:
Ancienne version:
Cela fonctionne parce que php effectue un cycle des caractères, et nous vérifions simplement si ce n'est pas le cas
z
et nous arrêtons.(Une curiosité est que lorsque php atteint
z
, il va ensuite àaa
.)la source
Python 2 - 155
Remarque: comme les caractères de contrôle n'apparaissent pas sur SE, je les ai remplacés par
\x19
.Version base 64:
la source
from string import *
ou comment il s'appelle en Python[]
crochets de la première ligne, ce qui crée implicitement un tuple, puis le décompresse.ord('d')//len('aaaa') to before the string so you don't have to bracket it.
LiveScript - 181
Importations requises:
Si vous souhaitez l'exécuter sous Node.js, installez les packages
LiveScript
( notlivescript
) etprelude-ls
npm, remplacez-lesalert
parconsole.log
et exécutez-leslsc prog.ls
, oùprog.ls
contient le programme.la source
0123456789
"T-SQL: 206
Utilise une jointure croisée sur cinq lignes pour générer 25 lignes en sélectionnant la phrase. Les sauts de ligne sont importants pour la sortie.
la source
Bash, 151 octets
Plutôt un port droit de votre propre réponse
la source
C, 196 caractères
Ce n’est pas une tâche facile pour un bon vieux C. L’affacturage avec le motif "% steen-centaines ..." m’en épargne deux caractères.
Espace blanc pour plus de clarté, inclure non compté.
la source
Ruby, 145
Explication
String#upto
pour imprimer les lignes 25 fois. La plage"K".."c"
est de 25 caractères.la source
#{a="The "}
vous coûte en réalité plus de caractères!#{a}
est la même longueur queThe
Raquette 173
Ungolfed:
la source
C,
215203199 octetsUngolfed
J'ai utilisé peu de décalage pour itérer sans aucun nombre.
a<<='\xC'+'\xD'
définit a sur 0b1 [25 zéros]a>>=!!a
décale juste un bit pour chaque fois que nous parcourons la boucleModifier :
a
est égal à argc, donc sa valeur est déjà 1 lorsque le programme est exécuté sans argument. Changéa>>='\xB'-'\xA'
àa>>=!!'\xA'
qui est plus court de 4 octets. De plus, le texte n'a été affiché que 24 fois. Fixe le. Suppression des crochets supplémentaires dans le fichierwhile
.Edit 2: changé
!!'\xA'
en!!a
. Semble fonctionner et enregistre 4 octetsla source
puts
pour enregistrer plus d'octets.Rant, 191 octets
Pas la solution la plus courte, mais toujours cool. J'ai écrit un sous-programme pour écrire les trois premières lignes et je l'ai conçu pour que l'appelant avec un argument vide renvoie une chaîne de 25 caractères. Je passe ensuite sa longueur au répéteur.
Ungolfed:
Essayez-le en ligne
la source