Écrivez une fonction f (n, k) qui affiche le compte à rebours en k à partir de n.
Un compte à rebours unidimensionnel à partir de 5 ressemble à
54321
Un compte à rebours en 2 dimensions à partir de 5 ressemble à
54321
4321
321
21
1
Enfin, un compte à rebours en 3 dimensions à partir de 5 ressemble à
54321
4321
321
21
1
4321
321
21
1
321
21
1
21
1
1
Définition formelle
Le compte à rebours unidimensionnel de n'importe quel n est une seule ligne avec les chiffres n, n-1, ..., 1 concaténés (suivi d'une nouvelle ligne).
Pour tout k, le compte à rebours k-dimensionnel de 1 est la ligne unique
1
Pour n> 1 et k> 1, un compte à rebours k-dimensionnel à partir de n est un compte à rebours (k-1)-dimensionnel à partir de n suivi d'un compte à rebours k-dimensionnel à partir de n-1.
Contribution
Deux entiers positifs k et n <= 9, dans le format de votre choix.
Production
Le compte à rebours en k à partir de n, avec une nouvelle ligne après chaque compte à rebours en 1 dimension. Des sauts de ligne supplémentaires sont autorisés dans la sortie.
Notation
Score de golf standard.
Exemple de bonus
Voici un exemple avec k> n, un compte à rebours en 4 dimensions à partir de 3 (avec des commentaires supplémentaires qui ne doivent pas être inclus dans les solutions réelles):
-- 3-dimensional countdown from 3
321
21
1
21
1
1
-- 4-dimensional countdown from 2:
---- 3-dimensional countdown from 2:
21
1
1
---- 4-dimensional countdown from 1:
1
Précisions:
Les chiffres sur une ligne ne doivent pas nécessairement être adjacents, mais ils doivent être régulièrement espacés.
Vous pouvez écrire un programme complet au lieu d'une simple fonction, si vous préférez.
Réponses:
Python, 60 octets
Testez-le sur Ideone .
Comment ça fonctionne
Le compte à rebours en k à partir de n peut être défini avec un seul cas de base:
En utilisant la définition récursive de la question,
f(n,k)
retournef(n,k-1)+f(n-1,k)
si n> 1 et k> 1 ; sinon, il renvoie les n + 1 derniers caractères de'987654321\n'
.la source
Gelée , 8 octets
Il s'agit d'un programme complet qui attend n et k comme arguments de ligne de commande.
Essayez-le en ligne!
Comment ça fonctionne
la source
Y
fonctionne pas à la place dep⁷
?5, 1
, il s'affiche[54321]
.Javascript,
403837 octets1 octets enregistrés grâce à @ edc65:
Réponses précédentes
38 octets grâce à @Neil:
40 octets:
la source
||
au lieu de?n:
. Enregistrez un autre octet en utilisant un saut de ligne littéral à l'intérieur de`
s au lieu de'\n'
.f=(n,k)=>n?(k?f(n,k-1):n)+f(n-1,k):k?``:`\n`
*
plutôt&&
.Python,
7675 octets-1 octet grâce à @ Sp3000
Exécute la procédure telle que décrite dans l'OP: joint les
n
résultats décroissants pourk-1
les sauts de ligne avec une base de récursivité de la'n...1'
chaîne quandk
est1
(k
pas plus grand que1
puisque nous sommes garantis unek
entrée positive ).Cas de test sur ideone
la source
Python,
868180 octetsd
est le nombre de dimensions,n
est le nombre de compte à rebours.Publiera bientôt une explication.
EDIT # 1: changé en lambda.
EDIT # 2: 1 octet enregistré grâce à @DestructibleWatermelon.
la source
Haskell, 57 octets
Exemple d'utilisation:
5 # 3
->"\n54321\n4321\n321\n21\n1\n4321\n321\n21\n1\n321\n21\n1\n21\n1\n1"
.Une mise en œuvre directe de la définition.
la source
Raquette 215 octets
Essai:
la source
54321
apparaît deux fois?λ
) représente toujours moins d'octets que l'utilisationdefine
. De plus, l'entrée pour an
été spécifiée comme étant un nombre pour lequel vous créez le(range 1 n)
. Voir aussi sur le remplacement de votrecond
par unif
, car vous économisez des octets sur leelse
.J,
383732 octetsC'est une fonction qui prend k sur le LHS et n sur le RHS.
5 octets enregistrés avec des idées de @ Adám.
Usage
Explication
la source
Dyalog APL , 18 octets
Demande n , puis k .
~∘'0'⍤1
supprimer (~
) le (∘
) zéros ('0'
) des lignes (⍤1
) (remplissage avec des espaces au besoin) de⍕
la représentation des caractères de(⌽⍳)⍤0⍣⎕
le nombre inversé (⌽
) jusqu'à (⍳
) chaque scalaire (⍤0
), répété (⍣
) fois entrée (⎕
)⊢
sur⎕
entrée numériqueTryAPL en ligne!
la source
C 93 octets
Mise en œuvre itérative.
C
6765615652 octetsImplémentation récursive
la source
m
intérieur de l'puts()
appel par"987654321"
.Lot, 117 octets
Réponse de Python de Port of Dennis ♦.
la source
Rubis, 56 octets
Usage
Lorsque vous affichez des solutions, vous devez utiliser "Kernel # put".
Exemple:
la source