Vous devez générer un stéréogramme de texte selon une chaîne de saisie contenant un paragraphe de texte, une ligne vide puis le message caché. Le résultat sera affiché sous la forme d'une paire de paragraphes, l'un avec un espacement différent, ce qui en augmentera l'effet lorsqu'il sera visualisé stéréographiquement (une explication peut être trouvée ici ).
Exemple
Contribution:
I invented vegetarianism. It is a diet involving no meat, just vegetables. It is also common in cows - they are awesome.
vegetarianism. is awesome.
Sortie:
I invented I invented
vegetarianism. vegetarianism.
It is a diet It is a diet
involving no involving no
meat, just meat, just
vegetables. It vegetables. It
is also common is also common
in cows - they in cows - they
are awesome. are awesome.
Bonus
- Ajouter une option pour choisir entre parallèle et yeux croisés comme entrée utilisateur (-20)
- Largeur de colonne réglable comme entrée utilisateur (-50)
C'est le golf de code, donc le code le plus court après la victoire des bonus.
Réponses:
Bash, sed:
228223197(242 - 70) = 172Si le script se trouve dans un fichier exécutable appelé "stéréo", tapez
largeur_colonne est un nombre; 25-45 fonctionnera, la valeur par défaut est 35.
page_width est un nombre, devrait être environ le double de la column_width, la valeur par défaut est 80
Pour une vision croisée, utilisez "r l" comme quatrième argument. La valeur par défaut est "l r", qui permet une visualisation parallèle.
EDIT: réécrit pour diviser le fichier en un mot par ligne, puis remonter à la fin. Remarque: réserve le signe "=" pour son propre usage. Tout signe "=" dans le fichier d'entrée deviendra vide.
EDIT: Si votre message contient des signes "=", vous pouvez choisir un autre symbole pour le script à utiliser, en le fournissant comme 5ème paramètre.
Exemple
Entrée: vegetarianism.txt:
Résultat
./stereo vegetarianism.txt 32 72 "l r": | développer (en utilisant les deux points pour son symbole de travail interne)
./stereo washington.txt 35 75 "l r" | agrandir
Le "| expand" n'est pas nécessaire mais lors du décalage de la sortie de 4 endroits, les TAB sont mal gérés. Il pourrait être mis dans le script au coût de 7 octets.
Variation ImageMagick
Remplacement de la dernière ligne par une commande ImageMagick texte-image:
Dans celui-ci, le "r" et le "l" pour la visualisation croisée par rapport à la visualisation parallèle sont des arguments séparés:
./im_stereo vegetarianism.txt 40 80 lr =
(source: simplesystems.org )
EDIT 3: Ajout de la variation ImageMagick.
la source
TeX 212
J'utilise un système de composition, pas ASCII. La largeur de colonne peut être modifiée en changeant
90pt
dans la quatrième ligne, mais je ne sais pas si cela suffit pour bénéficier de la remise de 50 octets. La distance entre les deux copies du texte peut être modifiée en modifiant le9pt
, également sur la quatrième ligne. Le code peut probablement être raccourci. On peut remplacer chaque nouvelle ligne par un seul espace, mais pas les supprimer complètement.Après avoir appelé
tex filename.tex
dans le terminal, l'utilisateur est invité à donner le texte principal, puis à nouveau invité pour une liste de mots à déplacer. Pas de ligne vide entre les deux. La liste (séparée par des espaces) des mots donnée dans la deuxième ligne doit apparaître exactement comme dans le texte principal (la ponctuation est traitée comme une lettre, seuls les espaces délimitent les mots).la source
Javascript 391 (441 - 50)
(Mon premier code de golf)
Résultat
Code long:
la source
Q='length'
puis remplacez des choses commeA.length
avecA[Q]
.Javascript 493 (attentes minimales)
Ce code configure deux tableaux de lignes (gauche et droite), les organise dans une chaîne et imprime sur la
f12
console.Ce n'est qu'une réponse minimale, pas destinée à gagner.
la source
L=b=>b.length;c=console.log;p=prompt;r=(l=p().split(g=" ")).slice(),m=p().split(g),s=(f=[]).slice(),n=w=a="";for(i=0;i<L(l);i++)l[i]==m[0]&&(m.shift(),l[i]=g+r[i],r[i]+=g),L(l[i])+1>w&&(w=L(l[i])+1);for(;L(l);){f[L(f)]="";for(s[L(s)]="";L(l)&&L(f[L(f)-1])+L(l[0])<w;)f[L(f)-1]+=l[0]+g,s[L(s)-1]+=r[0]+g,l.shift(),r.shift();f[L(f)-1]+=g.repeat(w-L(f[L(f)-1]))}for(c(f,s);L(f);)a+=f[0]+s[0]+"\n",f.shift(),s.shift();c(a)
GolfScript 209 (279-50-20)
Ceci est mon premier grand programme GolfScript. Je ne serais pas surpris s'il y avait des optimisations à réaliser. Les deux bonus sont pris en charge; ils devraient être trouvés après les entrées de message, comme:
Si vous avez enregistré ce fichier dans
input
(et téléchargé GolfScript ), vous pouvez appeler le script avec:Golfé
Non golfé
la source
JavaScript 391
la source