Défi
Écrivez un programme ou une fonction qui accepte une chaîne s
et un entier n
comme paramètres. Votre programme doit imprimer (ou renvoyer) la chaîne une fois transformée comme suit:
En commençant en haut à gauche et en descendant vers la droite, écrivez s
comme une vague de hauteur n
. Ensuite, de haut en bas, combinez chaque ligne sous forme de chaîne (sans espaces).
Exemple
Compte tenu de la chaîne "WATERMELON" et d'une hauteur de 3:
La vague devrait ressembler à ceci:
W R O
A E M L N
T E
Ensuite, combinez les rangées de haut en bas:
WRO
AEMLN
TE
Donc, votre programme devrait retourner la chaîne "WROAEMLNTE"
De même, "WATERMELON" de hauteur 4 devrait produire la vague suivante:
W E
A M L
T R O
E N
Votre programme devrait alors renvoyer la chaîne "WEAMLTROEN"
Règles
Contribution
L'entrée peut être prise dans n'importe quel format raisonnable. La chaîne peut être dans tous les cas que vous préférez. Vous pouvez supposer que0 < n <= s.length
Sortie
La sortie ne doit être constituée que de la chaîne transformée (qu'elle soit retournée ou imprimée sur STDOUT), plus tous les retours à la ligne de fin.
Notation
C'est le golf de code , donc la réponse la plus courte en octets gagne! Les échappatoires standard ne sont pas autorisées.
Cas de test
Input Output
programmingpuzzles, 5 -> piermnlsomgzgapzru
codegolf, 3 -> cgoeofdl
elephant, 4 -> enlatehp
1234567, 3 -> 1524637
qwertyuiop, 1 -> qwertyuiop
n
> 1? Veuillez clarifier et sinon ajouter un cas de testn > 0
, maisn=1
c'est un cas valide. Je vais mettre à jour la question maintenant.Réponses:
Husk , 6 octets
Essayez-le en ligne!
Fonctionne
n = 1
aussi.Explication
La fonction d'ordre supérieur fonctionne
δ
comme ceci sous le capot. Supposons que vous ayez une fonction d'ordre supérieur qui prend une fonction unaire et une liste et renvoie une nouvelle liste. Par exemple,Ö
prend une fonction et trie une liste en l'utilisant comme clé. Prend ensuiteδÖ
une fonction binaire et deux listes, zippe les listes ensemble, s'appliqueÖ
à trier les paires en utilisant la fonction binaire comme clé, et enfin projette les paires à la deuxième coordonnée. Nous utilisonsK
comme fonction clé, qui renvoie simplement son premier argument et ignore le second.la source
MATL , 16 octets
Essayez-le en ligne! Ou vérifiez tous les cas de test .
Explication
Tenez compte des entrées
5
,'programmingpuzzles'
.la source
Haskell , 64 octets
Essayez-le en ligne!
la source
J ,
54, 29, 2726 octets-1 octet grâce à hoosierEE
Essayez-le en ligne!
la source
n=1
depuis le début|@i:
au lieu d'[:|i:
enregistrer un octetR , 68 octets
Essayez-le en ligne!
n=1
cas corrigés grâce à @ J.Doela source
Python 2 ,
11910898929197939190 octetsEssayez-le en ligne!
-1 octet, merci à Jonathan Frech
la source
05AB1E (hérité) ,
118 octetsInspiré par la réponse MATL de @LuisMendo .
-3 octets grâce à @Adnan parce que je suis un idiot ..>.>
Essayez-le en ligne .
Explication:
REMARQUE: Le
counter_variable
est utilisé, car dans la version Python Legacy de 05AB1E, leΣ
n'avait pas d'index intégréN
, ce qu'il a dans la nouvelle version de réécriture Elixir de 05AB1E. Alors pourquoi est-ce que j'utilise toujours la version Legacy? Parce que dans la réécriture Elixir, il transforme implicitement la chaîne en une liste de caractères, nécessitant un supplément}J
pour la retransformer en chaîne pour la sortie (et il contient également un bogue en ce moment oùè
ne fonctionne pas du tout pour indexer dans la liste allongée ..: S)la source
¹g∍
pièce car 05AB1E utilise l'indexation cyclique pourè
.Japt , 16 octets
Testez-le en ligne!
Explication
la source
ü
méthode est nouvelle?-P
indicateur pour en enregistrer un autre.Gelée , 8 octets
6 octets échouent pour la hauteur 1; deux octets utilisés pour y remédier ... peut-être qu'un 7 peut être trouvé?
Un lien dyadique acceptant un entier positif et une liste de caractères qui donne une liste de caractères.
Essayez-le en ligne!
Comment?
la source
JavaScript (ES6), 75 octets
Formule plus courte suggérée par @MattH (-3 octets)
Prend l'entrée comme
(string)(n)
.Essayez-le en ligne!
JavaScript (ES7), 78 octets
4 octets enregistrés grâce à @ETHproductions
Prend l'entrée comme
(string)(n)
.Essayez-le en ligne!
la source
o
avecx/n&1?n-x%n:x%n
au lieu den*n-(x%(n*2)-n)**2
.K ( Kona ), 23 octets
Une traduction de la réponse J par Galen
la source
MBasic ,
146159155 octetsMis à jour pour gérer n = 1
Sortie:
la source
Perl 6 , 49 octets
Essayez-le en ligne!
Prend l'entrée comme une fonction curry.
Explication:
La séquence de tri est la suivante (pour
n=5
):la source
J , 24 octets
Essayez-le en ligne!
Verbe dyadique explicite. Exécutez-le comme
'codegolf' f 3
.Comment ça marche
Normalement, la fonction explicite prend 5 octets supplémentaires sous la forme de
n :'...'
. Mais si la gestion des erreurs est ajoutée, la différence descend à 2 octets en raison des parens et de l'espace(tacit)<space>::
.la source
sort up
?! Votre verbe explicite est toujours plus court de 3 octets. Bonne décision!APL (Dyalog Classic) , 23 octets
Essayez-le en ligne!
la source
Powershell,
9995 octetsScript de test:
Sortie:
Explication
Le script:
L'expression
((1..$n+$n..1)*$s.Length|gu
génère une séquence similaire1,2,3,3,2,1,1,2,3,3,2,1...
et supprime les doublons adjacents.gu
est un alias pour Get-Unique .$n=3
la séquence dédupliquée, c'est:1,2,3,2,1,2,3,2,1...
$n=1
la séquence dédupliquée, c'est:1
L'expression
$i++*($n-gt1)
renvoie un index dans la séquence dédupliquée.=$i++
si$n>1
, sinon=0
la source
Rubis ,
7565 octetsEssayez-le en ligne!
Prend l'entrée comme un tableau de caractères, renvoie une chaîne
Comment ça marche:
h
chaînesh
et descend jusqu'à0
et ainsi de suite)la source
C,
142134 octets8 octets économisés grâce à Jonathan Frech
Code:
Explication:
Essayez-le en ligne!
la source
Fusain , 21 octets
la source
SNOBOL4 (CSNOBOL4) , 191 octets
Essayez-le en ligne!
Prend
S
ensuiteN
sur des lignes distinctes.Explication:
la source
Nettoyer ,
10584 octetsEssayez-le en ligne!
la source
JavaScript (Node.js) , 83 octets
Essayez-le en ligne!
la source
Pyth ,
2221 octetsPrend la saisie comme
n
suits
sur des lignes distinctes. Essayez-le en ligne ici ou vérifiez tous les cas de test en même temps ici .Modifier: sauvegarde un octet en déplaçant le chèque vide à la fin du traitement. La version précédente:
seMhD,V*lz|+PUQP_UQ]0z
la source
Rouge , 153 octets
Essayez-le en ligne!
Explication:
la source
J'ai deux solutions au problème. La première solution que j'ai faite d'abord, j'ai pensé à une autre façon de faire qui, selon moi, permettrait d'économiser des octets, mais elle ne l'a pas fait, je l'ai donc incluse de toute façon.
Solution 1
PHP ,
152144116 octetsEssayez-le en ligne!
Solution 2
PHP , 162 octets
Essayez-le en ligne!
la source
$f
et$n-1-$i
pouvez l'être$n-~$i
. 144 octetsn=1
. Celui-ci fonctionne pour le même nombre d'octets.echo
pour enregistrer 5 octets supplémentairesRubis , 84 octets
Essayez-le en ligne!
la source