Dans ce défi, le faux texte de sélection est un texte affiché partie par partie, à la manière d'un défilement.
Quelques exemples:
testing 4
t
te
tes
test
esti
stin
ting
ing
ng
g
hello 2
h
he
el
ll
lo
o
foobarz 3
f
fo
foo
oob
oba
bar
arz
rz
z
Something a bit longer 10
S
So
Som
Some
Somet
Someth
Somethi
Somethin
Something
Something
omething a
mething a
ething a b
thing a bi
hing a bit
ing a bit
ng a bit l
g a bit lo
a bit lon
a bit long
bit longe
bit longer
it longer
t longer
longer
longer
onger
nger
ger
er
r
small 15
s
sm
sma
smal
small
small
small
small
small
small
small
small
small
small
small
mall
all
ll
l
aaa 3
a
aa
aaa
aa
a
brace yourself 6
b
br
bra
brac
brace
brace
race y
ace yo
ce you
e your
yours
yourse
oursel
urself
rself
self
elf
lf
f
Vous devez écrire un programme ou une fonction qui prend deux entrées et imprime la sortie comme décrit ci-dessus. Vous pouvez ou non produire des espaces de fin dans votre sortie. C'est le code-golf, donc le code le plus court en octets gagne.
Si votre programme est autonome (c'est-à-dire lorsqu'il est exécuté, il imprime réellement les lignes) (l'entrée peut être codée en dur mais facile à modifier) et qu'il dort un peu entre chaque ligne de sortie, vous obtenez un bonus de -10.
Réponses:
CJam,
12 à11 octets1 octet enregistré par Dennis.
Je me sers de "L'entrée peut être codée en dur mais facile à modifier": cela suppose que l'entrée soit déjà sur la pile, de sorte que vous pouvez ajouter une valeur
"testing" 4
à celle ci-dessus, par exemple.Testez-le ici.
Explication
Notez que la transposition de la sortie souhaitée est beaucoup plus simple:
Donc , nous avons juste besoin de créer des
n
lignes, préfixeri
espaces pouri
den-1
jusqu'à0
. C'est ce que fait le code:19 - 10 = 9?
Je trouve le bonus "dors un peu entre chaque ligne" un peu vague et louche, mais voici une version à 19 octets qui décroche simplement après chaque ligne en calculant toutes les permutations du tableau
[0 1 .. 7]
. Dans l'interpréteur en ligne, cela conduit simplement à l'affichage du résultat final un peu plus tard, mais si vous utilisez l'interpréteur Java, cela imprimera chaque ligne après "dormir un peu":la source
z
. En supposant que l'entrée soit imprimable en ASCII, vous pouvez la remplacerW%
par$
.z
tout mon temps pour les défis basés sur la grille ascii.)C, 69 octets
magie printf!
Version développée avec quelques explications:
Et voici un exemple:
la source
Pyth, 13 octets
Essayez-le en ligne: Compilateur / Exécuteur Pyth
Explication
la source
Python
6563Cela a été utilisé pour écrire les exemples. Solution de base.
la source
join
Javascript ( ES7 Draft ), 61 octets
Javascript ( ES6 ) entrées codées en dur, 47 octets
En supposant des entrées codées en dur dans les variables
s
(chaîne) etl
(longueur), il peut être réduit à une impression de 47 octets avec une alerte pour chaque ligne:la source
K, 19 octets
Placez les
x
espaces (x#" "
) au début de la chaîney
. Utilisez ensuite la forme "analyse en virgule fixe" de l'opérateur\
pour créer l'ensemble des chaînes pivotées. Un point fixe dans K cesse d’itérer si le résultat de l’application de la fonction renvoie un résultat répété ou si l’entrée initiale est réexaminée. Étant donné![1]
que la rotation d'une chaîne se fait pas à pas,![1]\
est un bon idiome pour les permutations cycliques. Ensuite, nous coupons les résultats avecx#'
.Un exemple de parcours:
la source
J (22)
Cela a fini plus longtemps que prévu, mais je suppose que ce n'est pas trop grave.
Fait amusant: pas du tout
[
et]
sont réellement assortis, ou ont quelque chose à voir avec l'autre.la source
[{."1]]\.@,~' '#~[
(18 octets).Julia, 75 octets
Cela crée une fonction non nommée qui accepte une chaîne et un entier en entrée et imprime la sortie. Pour l'appeler, donnez-lui un nom, par exemple
f=(s,n)->(...)
.Ungolfed + explication:
Exemples:
Notez que cette solution est de 66 octets si
s
etn
sont supposés exister déjà dans le programme.la source
QBasic, 56 - 10 = 46
Ceci est golfed QBasic - le autoformatter étendra
?
dansPRINT
et ajouter quelques espaces. Testé avec QB64 , bien que rien ici ne puisse fonctionner avec DOS QBasic.QBasic est généralement pas bon avec les opérations de chaîne, mais il très bien est une fonction qui renvoie un nombre donné d'espaces!
En prenant certaines libertés avec "l'entrée peut être codée en dur", ce code s'attend à ce que la variable
s
soitDIM
'dAS STRING
, afin d'éviter le$
suffixe de type, ainsi que la chaîne affectées
et le nombren
.Exemple de préambule:
Sortie:
La ligne blanche supérieure peut être éliminée en démarrant la
FOR
boucle à 2 au lieu de 1.Bonus: Ajouter
CLS
juste avantNEXT
un maigre quatre octets transforme cela en ... un véritable chapiteau !Je
PRINT CHR$(3)
QBasic. : ^ Dla source
Ruby,
68, 55 octetsAprès une mise à jour de @blutorange:
Sortie:
ruby marquee.rb "Something a bit longer" 10
Première soumission demandant donc des critiques.
la source
a=" "*(z=$*[1].to_i)+$*[0];a.size.times{|b|puts a[b,z]}
Haskell,
615954 octetsExemple d'utilisation:
Edit: une ligne vide au début / à la fin est autorisée
la source
Bash, 109 - 10 = 99 octets
Je vois que dans le temps qu'il m'a fallu pour écrire ma solution, j'ai été battu à mort. Néanmoins, j'ai passé trop de temps à l'écrire pour ne pas l'afficher ...
En plus de cela, il a des caractéristiques uniques, comme le temps entre les lignes d'impression pouvant être ajusté par l'utilisateur en fonction de la quantité dans le répertoire courant! (Également quelque peu incohérent, selon le ressenti de votre disque)
Exemple:
Ungolfed et commenté:
Je n'ai jamais vraiment essayé cela auparavant. Suggestions et commentaires bienvenus!
la source
Pure Bash, 61 octets
Sortie:
la source
Perl, 50
57
personnages+3
pour-i
,-n
et-l
.-10
personnages pour le sommeil.-i
est utilisé pour l'entrée numérique, qui est stockée dans$^I
. Fondamentalement, nous ajoutons desi
espaces au début et à la fin de l'entrée, puis nous recherchons tous lesi
caractères et les parcourons en bouclewhile
.say
retourne commodément1
que nous pouvons entrersleep
.la source
s/^|$/$"x$^I/eg;sleep say$1 while s/.(.{$^I})/$1/
. Vous pouvez également perdre le-l
drapeau, mais je pense que vous devez compter 5 pour-i -n
(puisque-i
n'est pas un indicateur par défaut) si vous exécutez via:echo -n "testing" | perl -i4 -nE'...'
. Devrait toujours être à 44 cependant!Shell POSIX, 94
Je sais que cela ressemble plus à Perl, mais c'est vraiment une coquille!
La première ligne ajoute les espaces de début nécessaires, uniquement lors de la première fois dans la boucle. Il définit $ 3 pour indiquer qu'il l'a fait.
La deuxième ligne (nouvelle ligne incorporée dans NB) est récursive jusqu'à épuisement de l'entrée. Elle affiche les n premiers caractères de la chaîne, puis s'invoque elle-même en supprimant le premier caractère de $ 1.
Testé avec Debian
/bin/dash
- Des exemples de sorties suivent:./marquee "test" 4
./marquee "Quelque chose d'un peu plus long" 10
./marquee "petit" 15
la source
Python 2, 51 octets / 37 octets
Sans entrée codée en dur (51 octets):
Appeler comme
f("testing", 4)
.Avec entrée codée en dur (37 octets):
Les deux versions génèrent une première ligne d'espaces.
la source
Python 2, (54 octets - 10 = 44)
64626046(J'ai supposé que la ligne pour l'entrée codée en dur n'ajoutait pas au nombre d'octets.)
Je n'ai pas encore vu de programme qui dort réellement entre les lignes d'impression, alors j'en ai créé un, car il ressemble plus à un chapiteau de cette façon. Ce programme contient 2 octets supplémentaires dans Python 3.
EDIT: Le programme effectue maintenant un calcul au lieu de dormir. J'ai utilisé
i
dans le calcul pour que le programme ne le stocke pas comme une constante, mais doit le calculer à chaque fois.Essayez celui de Python 3 ici (le remplaçant de Python 2 est bogué)
la source
time.sleep
vous pouvez utiliser au lieu de longs calculs? Aussi, c'est un peu plus court d'utiliser unewhile
boucle:i=0\nwhile s[i-n:]:print(' '*n+s)[i:n+i];i+=1
q=
. Merci.i**(7**7)
Pyth, 12 octets
Manifestation.
Pyth, 17 - 10 = 7 octets
Cette version utilise un délai entre les impressions en ligne. Cela se voit sur le compilateur en ligne de commande, que vous pouvez obtenir ici .
Exécutez ce qui suit:
Cela a un délai d'environ 0,3 secondes avant chaque impression. Si vous préférez un délai plus long, vous pouvez utiliser:
Cela a environ un délai de 4 secondes.
la source
Java,
133119115Version longue:
Le remplissage est appliqué à la chaîne, puis les sous-chaînes de la chaîne complétée sont imprimées sur la console.
-4 octets grâce à @KevinCruijssen.
la source
for(;i<= s.length();System.out.println(s.substring(i-n,i++)));
Matlab, 95
Comme toujours, il s’agit d’une manipulation de matrices. Le noyau ici est la commande
spdiags
qui vous permet de créer très facilement des matrices diagonales.Avec codage en dur 71 octets (la chaîne attendue est stockée
t
et le nombre entrék
)la source
APL, 50 - 10 = 40 caractères
Je suis sûr que ça pourrait être plus court. 50 est la longueur du programme sans les deux constantes.
Explication:
Développé pour ngn APL sur le terminal.
la source
Powershell -
8583 octetsIl est tard, ça ne va pas gagner :-) Mais je pensais en rajouter un Powershell:
function m($s,$n){1..$($n+$s.length)|%{-join(" "*$n+$s+" "*$n)[$_-1..$($n+$_-1)]}}
la source
Cobra - 60
la source
Groovy - 82
la source
Lua, 79 octets
la source
C #, 112 octets
Programme complet avec méthode non golfée et cas de test:
la source
Gelée , 15 octets - 10 = 5 ( non compétitif ?)
Essayez-le en ligne!
Dort pendant une seconde entre chaque ligne. Imprime un retour à la ligne final, si cela est acceptable.
yay jelly bat le charbon
la source
PHP 4.1, 85-10 = 75 octets
Oui, c'est une version très ancienne, mais elle a une fonctionnalité dont j'ai besoin.
Vous pouvez toujours l'exécuter dans n'importe quelle version plus récente de PHP, mais vous devez définir vous-même les variables avant d'exécuter le code ci-dessous.
Cela m'aide à réduire beaucoup la taille de mon code!
C'est vraiment basique:
J'ai couru pour le bonus pour cette raison, citant OP:
Comme vous pouvez le constater, il dort.
Cela suppose que vous avez
register_globals
activé par défaut les paramètres par défaut de cette version.Vous pouvez facilement tester dans votre navigateur, avec
minimalquelques changements:Le code ci-dessus est un polyglotte et vous pouvez l'exécuter dans votre navigateur ou dans un interpréteur PHP. Ne devrais-je pas obtenir un prix pour cela? Un cookie peut-être?
Liste des modifications:
sleep(1)
dans ce testconcat
Le but est de surmonter les différences de concaténation de chaînes entre PHP et JS.
-
est utilisé pour remplir l'espaceecho
,printf
utilise à la place (limitation PHP)<br>
utilise à la placela source
J ,
1514 octetsEssayez-le en ligne!
la source
APL (Dyalog) , 17 octets
Essayez-le en ligne!
(le programme suppose
⎕IO←0
ce qui est le défaut sur beaucoup de machines)Explication
la source