Dans ce défi, votre objectif sera de produire les paroles de Harder, Better, Faster, Stronger de Daft Punk . Plus précisément, affichez ce texte:
Work It
Make It
Do It
Makes Us
Harder
Better
Faster
Stronger
More Than
Hour
Our
Never
Ever
After
Work Is
Over
Work It
Make It
Do It
Makes Us
Harder
Better
Faster
Stronger
More Than
Hour
Our
Never
Ever
After
Work Is
Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour After
Our Work Is Never Over
Work It Harder, Make It
Do It Faster, Makes Us
More Than Ever, Hour
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour Af-
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour Af-
Our Work Is Never Over
Work It Harder Make It Better
Do It Faster, Makes Us Stronger
More Than Ever Hour Af-
Our Work Is Never Over
Work It Harder
Make It Better
Do It Faster Makes Us Stronger
More Than Ever Hour
Our Work Is Never Over
Work It Harder
Do It Faster
More Than Ever
Our Work Is Never Over
Work It Harder
Make It Better
Do It Faster
Makes Us Stronger
More Than Ever
Hour After
Our Work Is Never Over
Votre sortie peut avoir un saut de ligne ou un espace de fin.
Les méthodes de compression intégrées ne sont pas autorisées.
C'est le golf de code, donc le code le plus court gagne!
HQ9+Daft-Punk
ça qui imprime ça ...Réponses:
Rubis,
308303Algorithme
Intro de la chanson: prenez 16 jetons et imprimez-les deux fois (le dernier porte une nouvelle ligne supplémentaire)
Versets: Riffle les jetons ensemble pour faire les versets, 4 jetons par ligne, dans l'ordre suivant:
Sur certaines lignes, le dernier jeton est omis ou échangé contre
Af-
. Ces lignes sont notées avec un bit dans le nombre magique 0x744447 = 7619655.En trois lignes, l'avant-dernier jeton est également omis, ceux où
i%51/48==1
La ponctuation au milieu de la ligne peut être l'une des suivantes
' '
', '
'\n'
. Ceux-ci sont codés au numéro 02220010000200100010001001110010001000100010001000100010 (base 3) = "l4yq62lhgnizb0kfu" (base 36.)Avec commentaires
la source
Perl,
316309308307 octetsLa source doit être encodée en Latin-1.
Explication
Nous commençons avec les paroles originales. Par souci de concision, supposons qu'ils sont
Nous trouvons maintenant des sous-chaînes courtes (≥ 3 caractères) qui se produisent souvent. Dans ce cas,
"Work "
se produit deux fois. Nous remplaçons chaque occurrence par le caractère 0xE1. Nous nous souvenons également de la chaîne remplacée dans un tableau:La sous-chaîne suivante
"Harder"
,, est remplacée par 0xE0. Lesubsts
tableau se développe vers l'avant:Cela continue pour un total de 34 itérations jusqu'à ce que nous arrivions au caractère 0xC0.
Maintenant, nous concaténons l'
substs
utilisation du caractèreb
(qui n'apparaît pas dans les paroles) comme séparateur. Dans le code Perl, lesubsts
tableau est stocké dans@c
(en utilisant le mot simpleb
pour diresplit
où diviser), les nouvelles paroles brouillées sont dedans$e
et le code inverse simplement les 34 substitutions.la source
Sprects , 302 octets
Je viens de créer ce langage et j'ai décidé de le tester avec ce challenge. Il génère
\n
s au lieu de nouvelles lignes car il génère en HTML, mais l'interpréteur est écrit en JavaScript. Pour cette raison, voici une version avec<br>
s au lieu de\n
s:la source
er
un seul jeton?GolfScript (275 octets)
Celui-ci contient des caractères ASCII non imprimables, voici donc un vidage hexadécimal:
la source
Ruby - 643 octets
Edit: Golfé de 899 à 830.
Edit2: 830 -> 755.
Edit3: 755 -> 684.
Edit4: 684 -> 670.
Edit5: 670 -> 643.
Je n'ai pas vraiment utilisé de rubis, donc je suis sûr que cela pourrait être joué au golf, ce n'est qu'une tentative:
la source
JAVA 518 / 490Bytes
Edit: 7 octets inutiles et ajout d'une version Java 6 avec l'astuce {} statique Edit2: Explication expand
java6:
Merci à @Chris Drost pour l'astuce avec les nombreux "ER" dans le texte. La première chaîne est une table de recherche, la deuxième partie utilise les lettres minuscules (qui sont un bloc séquentiel en ascii) comme index dans la table en soustrayant la valeur magique de a de la valeur.
La deuxième partie se compose de plusieurs chaînes de longueur différente (les courtes sont des parties communes partagées entre plusieurs vers) qui sont assemblées en une longue avant que la boucle à travers les caractères ne se produise
la source
l
et utiliser la chaîne contenant tous les#
directement dans la boucle for-each, et changer lachar
dans la boucle for-each enint
:for(int o:r.toCharArray())System.out.print("\n#, #Work#Make#Do#Makes Us#Hard#Bett#Fast#Strong#More#Than#Hour#Our#Nev#Ev#Aft#Af-#Work Is#Ov# #er# It".split("#")[o-97]);
Ce qui donne -5 octets / 513 octets .JavaScript ES6,
440 octets438 octetsIl s'agit d'un tas d'optimisations de compression simples. En une ligne:
Cela a été écrit pour être un script exécutable via
iojs --harmony_arrow_functions file.js
; vous pouvez raser lesconsole.log()
frais généraux en fonction de la signification de "sortie des paroles".Explication
Après avoir effectué l'extérieur
.replace()
, le code fournieval
est:Gloire
.repeat
fonction brillante pour les chaînes, économisant 2 octets.la source
b.repeat(7)
place deb+b+b+b+b+b+b
PowerShell, 659 octets
Crée un tableau de mots
$a
- clés , puis encode les paroles à l'aide d'une série de chaînes numériques qui sont envoyées enfor
boucle. La boucle prend des sous-chaînes à deux chiffres, extrait le mot-clé correspondant du$a
tableau et enfin le-join''
concatène tout ensemble.Je pense que c'est à peu près aussi bon que cette méthode peut être faite, car chaque fois que j'essayais de jouer au golf (par exemple, en remplaçant
040008
par une nouvelle variable), cela s'avérait être quelques octets de plus parce que la longueur de la sous-chaîne n'était pas suffisante pour tenir compte de toutes les citations supplémentaires nécessaires. Bien qu'il y ait eu de nouvelles réponses publiées depuis que j'ai commencé qui ont des méthodes légèrement différentes qui semblent être plus courtes dans PowerShell (comme utiliser des caractères ASCII pour coder, plutôt que deux chiffres, peut-être?), Je vais m'en tenir à celui-là.Modifier - j'ai oublié l'encodage de remplacement que j'ai utilisé:
la source
GolfScript , 251 octets golfés
Essayez-le en ligne!
Élimination du
[]
code inutile et simplifié en conséquence. Modifiéi
etj
pour@
et^
pour permettre la suppression des espaces blancs. Première occurrence affectée' '
à la variable|
pour éviter de répéter les trois mêmes caractères.GolfScript , première version de travail 262 octets
Essayez-le en ligne!
Ceci est un portage de ma réponse Ruby dans golfscript en utilisant le même algorithme de base: sortez la liste des jetons deux fois, puis rifflez-les dans les versets et construisez les versets ligne par ligne, en ajustant les particularités de chacun.
Il y a quelques différences. Le nombre pour la ponctuation médiane correcte est en base 81 (commodément, cela fait un caractère ascii imprimable par verset); et le nombre codant s'il faut ou non imprimer le dernier jeton est modifié parce que l'index est à la
55-i
place dei-28
(ce dernier s'est avéré causer des problèmes avec des puissances négatives générant des nombres fractionnaires au lieu de tronquer en entier.)Commenté
la source
" "
) dans une variable. Aussi, ne sautez pas après avoir assigné une variable par habitude.51
que je ne le manque. Je le corrigerai plus tard et je chercherai peut-être d'autres façons de le raccourcir. Ceci est mon premier programme golfscript, et je les trouve très difficiles à lire lorsque des symboles sont utilisés comme variables, donc j'ai également laissé ma première version de travail de 262 octets au moins pour l'instant.Python - 1056 caractères
Il y a encore place à l'amélioration avec les noms de variables, mais c'est un début.
la source
Rubis, 486 octets
la source
Rubis, 483 octets
Fonctionne en encodant chaque mot utilisé dans la chanson en une seule lettre, en multipliant quelques strophes, puis en remplaçant les lettres encodées par les paroles réelles. Les virgules, les espaces sont laissés tels quels.
u
est une nouvelle ligne.la source
fuc b gud
PHP, 434 octets
Essayez-le en ligne!
la source