Le défi
Dans ce défi, vous devez effectuer deux tâches différentes (mais liées) en fonction de l'ordre de l'entrée.
Votre programme recevra une chaîne s
et un entier n
en entrée et
- divisé
s
en morceaux de longueurn
sis
vient en premier. Le dernier élément sera plus court si nécessaire. - diviser
s
enn
morceaux de longueur égale sin
vient en premier. Silen(s)
n'est pas un multiple,n
les premierslen(s) mod n
éléments seront un de plus.
Vous ne pouvez prendre que ces 2 entrées. s
ne contiendra jamais que des chiffres.
Remarques
- Vous pouvez utiliser le mappage inverse. Notez cela dans votre réponse si vous le faites.
s
ne contiendra que des caractères ASCII imprimables (pas de nouvelle ligne).- Vous ne pouvez pas utiliser de modules intégrés qui résolvent directement ces deux tâches. Tous les autres buildins sont autorisés.
- Vous devez prendre les deux arguments de la même source.
- Vous pouvez prendre les arguments dans une liste ordonnée ou tout autre format qui indique clairement leur ordre tant qu'il n'est pas ambigu.
- Vous pouvez prendre l'entrée comme une chaîne / flux et utiliser un caractère qui n'est pas une entrée valide (comme un octet nul) pour les séparer.
n
sera toujours égal ou inférieur à la longueur des
et supérieur à zéro.- Vous pouvez sortir la liste résultante dans n'importe quel format résonnant tant qu'elle indique clairement les pièces particulières et leur ordre.
Exemple
Entrée: programming, 3
Le dernier élément ne contient que 2 caractères, car 11 n'est pas divisible par 3.
Sortie: ["pro", "gra", "mmi", "ng"]
Entrée: 3, programming
11 n'est pas un multiple de 3, donc les 2 premiers éléments seront un de plus:
Sortie: ["prog", "ramm", "ing"]
Règles
- Fonction ou programme complet autorisé.
- Règles par défaut pour les entrées / sorties.
- Des échappatoires standard s'appliquent.
- Il s'agit de code-golf , donc le nombre d'octets le plus bas l'emporte. Tiebreaker est une soumission antérieure.
Cas de test
Les cas de test ont été générés avec ce programme Pyth (utilise des fonctions intégrées, donc aucune réponse valide). Merci à @FryAmTheEggman d'avoir fourni la version de base de cela!
3, helloworld -> [«enfer», «owo», «rld»] helloworld, 3 -> ['hel', 'low', 'orl', 'd'] 1, programmation -> ['programmation'] programmation, 1 -> ['p', 'r', 'o', 'g', 'r', 'a', 'm', 'm', 'i', 'n', 'g'] 8, programmation -> ['pr', 'og', 'ra', 'm', 'm', 'i', 'n', 'g'] programmation, 8 -> ['programm', 'ing'] 9, code golf -> ['c', 'o', 'd', 'e', '', 'g', 'o', 'l', 'f'] code golf, 9 -> ['code golf'] 4, 133tspeak -> ['133', 'ts', 'pe', 'ak'] 133tspeak, 4 -> ['133t', 'spea', 'k']
Codage heureux!
Réponses:
MATL,
462621272942 octetsEssayez-le en ligne! (Mis à jour légèrement pour fonctionner avec la dernière version de la langue)
Explication
la source
e
un builtin interdit?XUZN?...
parU?...
et échanger les deuxif
branches. De plus, vous n'avez pas besoin du3$
e
ne résout pas directement le problème, donc je ne le considère pas comme interdit, non.JavaScript (ES6), 132 octets
C'est probablement désespérément sur-conçu.
la source
JavaScript (Firefox),
8887 octetsAppelez-le comme
(...)("programming")(3)
avec Firefox 30+.la source
Rubis, 119 octets
Et je prends la première place par 2 octets ...
la source
x.scan(/.{,#{y}})
fonctionne tout aussi bien pour diviser les chaînes dans le premier cas. Ou cela compte-t-il comme une fonction intégrée?AWK,
121130128122 OctetsLe seul problème est que si la première entrée est une chaîne qui commence par une valeur numérique. Cela entraînerait
AWK
à voir la chaîne comme ce numéro et la deuxième entrée comme la chaîne.OK ... résolu le problème numérique, mais il a ajouté 9 octets :(.
Retravaillé un peu pour économiser quelques octets.
Presque de retour à la longueur d'origine. :)
la source
Haskell, 131 octets
Exemple d'utilisation:
Comment ça marche: le travail principal est effectué par la fonction d'aide
q
qui prend une paire de chiffres(d,m)
et une chaînes
. Il construit d'abord une liste dem
foisd+1
suivie par un nombre infinid
(par exemple(1,3)
->[2,2,2,1,1,1,1,1,...]
). Il utilise ensuitesplitPlaces
pour se divisers
en morceaux de longueurs données par la liste.splitPlaces
s'arrête s'ils
manque d'éléments, donc une liste infinie convient.La fonction principale
#
vérifie quel paramètre est le nombren
/ chaînestr
et appelleq
avec(div (length str) n, mod (length str) n)
ou(n, 0)
plusstr
.la source
C # (LINQPAD) - 335 octets
La partie lecture d'entrée a pris un peu de place. Gagnant de la réponse la plus longue.
Usage # 1:
Usage # 2:
la source
Pyth, 181 octets
Imaginons que le code le plus long en octets gagne \ o /
Essayez-le ici! (L'interprète en ligne semble avoir un bug, il affiche l'entrée alors qu'il ne devrait pas)
Voici la sortie du terminal:
Sérieusement, je suis ouvert à une nouvelle approche. Je suis nouveau sur python, donc j'ai probablement raté quelques raccourcis.
Je veux dire, je pense que ma réponse est désespérée du point qu'elle est plus longue que la réponse javascript ...
la source
testcases
. Les cas de test sont générés par Pyth. La solution est.xcsJKcJsK
, oùJ
etK
sont les deux arguments.PHP, 114 octets
(Remplacez
+@$p
paris_numeric($p)
pour corriger.)(Insérer
~
pour ASCII imprimable,a&
pour tout ASCII avant$t;
de corriger.)-nr
ou essayez-le en ligne .la source
PowerShell ,
122118 octetsEssayez-le en ligne!
Moins golfé:
la source