Ecrivez un programme ou une fonction qui prend un entier non négatif N à partir de stdin ou comme argument de fonction. Il doit imprimer ou renvoyer une chaîne d'un carré ASCII-art creux dont les côtés sont chacun constitués de N copies du nombre N.
Plus précisément:
Si N est 0
, aucune copie de N n'est utilisée, il ne devrait donc y avoir aucune sortie (ou seulement un retour à la ligne simple).
Si N est 1
, la sortie est:
1
Si N est 2
:
22
22
Si N est 3
:
333
3 3
333
Si N est 4
:
4444
4 4
4 4
4444
Si N est 5
:
55555
5 5
5 5
5 5
55555
Le modèle continue pour à 6
travers 9
.
Si N est 10
, la sortie est:
10101010101010101010
10 10
10 10
10 10
10 10
10 10
10 10
10 10
10 10
10101010101010101010
Notez que ce n'est pas réellement carré. Il a 10 rangées de hauteur mais 20 colonnes de largeur car il 10
comporte deux caractères. Ceci est destiné. Le fait est que chaque côté du "carré" contient N copies de N. Ainsi, toutes les entrées au 9
- delà seront techniquement des rectangles ASCII.
Par exemple, si N est 23
, le résultat est:
2323232323232323232323232323232323232323232323
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
23 23
2323232323232323232323232323232323232323232323
Voici les pastebin des sorties nécessaires pour 99
, 100
, 111
et 123
(ils peuvent sembler mal dans un navigateur , mais dans un éditeur de texte ils semblent corrects). Le résultat pour 1000
Pastebin est trop grand, mais il aurait 1000 lignes et 4000 colonnes. Les nombres de 4 chiffres ou plus doivent fonctionner comme des nombres plus petits.
Détails:
- N doit être écrit dans la représentation du nombre décimal habituel, sans
+
signe ni autre non-chiffre. - La zone creuse ne doit être remplie que d'espaces.
- Aucune ligne ne doit avoir d'espaces de début ou de fin.
- Une seule nouvelle ligne après la dernière ligne des carrés est éventuellement autorisée.
- Les langues écrites après la création de ce défi sont les bienvenues, elles ne sont tout simplement pas éligibles pour gagner .
- Le code le plus court en octets gagne!
la source
Réponses:
Jolf,
31272523 octetsCeci est codé dans le codage ISO-8859-7 et contient des données non imprimables, voici donc un hexdump:
Essayez ce violon en ligne ou vérifiez tous les cas de test en même temps (utilisez le bouton d'exécution complète) .
Cela se termine avec une erreur pour n = 0, autorisée par défaut.
Merci à Conor pour avoir joué au golf à
46! octets. inb4 barré quatre ressemble encore à quatre commentairesExplication
la source
xxd -r
.Shrriped , 317 octets
Pendant que je pose la question, je peux aussi montrer mon nouveau langage "puriste".
(fonctionne définitivement dans v1.0.0 )
Il n'y a pas d'opération mathématique intégrée dans Shtriped sauf incrémenter et décrémenter. Il n'y a pas non plus de bouclage ni de condition, donc tout doit être construit à partir de zéro dans chaque programme.
C'est ce que mon programme fait, par exemple ,
@
est essentiellement une boucle,+
est une fonction d'addition,}
est>=
. La sortie réelle n’est produite que dans les 8 dernières lignes du programme.Il n'y a pas non plus de ficelle dans Shtriped. Vous pouvez entrer et imprimer des chaînes, mais elles sont toutes représentées de manière interne en tant qu'entiers de précision arbitraire qui ne peuvent être incrémentés et décrémentés. Il n’ya donc pas de moyen facile d’obtenir la longueur de la chaîne
10
pour remplir le centre carré avec la bonne quantité d’espace. J'ai dû bricoler ensemble la fonction~
qui calcule efficacementfloor(log10(N)) + 1
pour trouver la longueur de N en décimal.Cela pourrait probablement être joué un peu plus en réorganisant où et comment les variables utilisées, mais pas tant que ça . Il n'y a pas moyen de contourner les limites inhérentes à Shtriped. (De toute façon, ça n'a jamais été une langue de golf.)
Code commenté (une barre oblique inverse est un commentaire):
la source
Sérieusement,
32313029 octetsEssayez-le en ligne!
Explication:
la source
JavaScript (ES6),
73 8278 octetsSauvegardé a4 octets grâce à @ user81655
Prend une chaîne, pas un nombre pour la saisie.
Essayez-le en ligne (tous les navigateurs fonctionnent)
la source
*(n-2)
par*~-~-n
pour sauvegarder un octet.MATL ,
342926 octetsCela fonctionne avec la version actuelle (13.0.0) du langage / compilateur
Essayez-le en ligne!
la source
T-SQL / SQL Server 2012+,
167161 octetsSortie:
LiveDemo
Entrez la taille souhaitée et cliquez Run querypour obtenir une représentation textuelle.
Veuillez noter que cette démo n'affiche pas les polices à largeur fixe . Donc
7
est plus épais que1
.MODIFIER:
Si nous traitons l'entrée en tant que chaîne:
LiveDemo2
la source
Julia, 78 octets
Il s'agit d'une fonction anonyme qui accepte un entier et imprime le rectangle ASCII sur STDOUT. Pour l'appeler, assignez-le à une variable.
Ungolfed:
Essayez-le en ligne
la source
Ruby, 100 octets
Dommage que je n'ai même pas réussi à battre JS. Toute aide supplémentaire au golf serait appréciée.
Voici une version plus ou moins non-golfée:
la source
n.to_s
puisque vous l'utilisez beaucoup, vous donnantm*n
pour la première partie etm+" "*[(n-2)*m.length,0].max+m
pour la deuxième partie.Retina, 76 octets
L'explication vient peut-être demain.
Essayez-le en ligne ici.
la source
C ++ 14, 156 caractères
Je pensais que c'était une solution plutôt cool, bien que je ne puisse évidemment pas battre la plupart des autres entrées ici.
Ungolfed:
Et comme toujours, appeler la fonction use
[](string t) { ... }("10");
la source
TSQL,
112104 octetsla source
Minkolang 0,15 , 57 octets
Essayez-le ici!
Explication
la source
Perl,
797674 octetsAssez simple. Le premier argument de la ligne de commande est considéré comme le nombre. Placez le script dans un fichier et exécutez-le
perl file.pl 1
.la source
shift
peut être remplacé parpop
.Perl,
626058 + 2 = 60 octetsNécessite des
-nlE
drapeaux:Avec des espaces ajoutés:
la source
R, 90 octets
Cela crée une matrice de
x*x
taille puis se remplit d'espaces de taillenchar(x)
. Six
plus petit que 2, alors rien n'est rempli.la source
x=scan();m=matrix(x,x,x);m[k<--c(1,x),k]=format("",w=nchar(x));write(m,"",x,,"")
c'est 10 octets de moins en utilisant une indexation négative et en le remplaçantn=x,s=''
parx,,''
tio.run/nexus/r#DYpBCsAgDAT/…write("[<-"(matrix(x<-scan(),x,x),k<--c(1,x),k,gsub("."," ",x)),1,x,,"")
pour 72 octets.Pyth - 26 octets
Essayez-le en ligne ici .
la source
Pip
-l
, 21 octetsUtilise des fonctionnalités linguistiques plus récentes que la question, autorisée par la stratégie en vigueur; si le libellé de la question est interprété de manière à outrepasser ladite politique, voir la réponse à 25 octets ci-dessous.
Essayez-le en ligne!
Merci à Luis Mendo réponse de MATL pour l'
(a+1)%n<2
astuce.Explication
Yq
lit une ligne de stdin et la glisse dansy
. Ensuite:Réponse originale de 2016, 25 octets (plus
-l
drapeau):Changelog:
MC
a été ajouté plus récemment; à l'époque, j'ai utiliséMMCG
(carte-carte + grille de coordonnées).++
sur des listes, donc je devais faire++*
(appliquer++
à chaque élément) à la place.M
ap a été étendu:<string1> M <string2>
retourne maintenant une liste delen(<string2>)
copies de<string1>
; à l'époque, j'ai utilisésX#y
, espace de répétition de chaîne parlen(y)
.la source
Pyth,
37 à30 octetsEssayez ici.
la source
Rétine , 90
Encore une fois, je suis sûr que les experts vont jouer au golf:
Essayez-le en ligne.
la source
¶
au lieu de;
vous débarrasser de la dernière étape?)[^¶]+
c'est commode.+
.Gelée, 28 octets
Grr, je ne peux pas dire si Jelly est mauvaise à cordes, ou si je suis mauvaise à Jelly.
Essayez-le en ligne.
la source
Pyke , 33 octets (non compétitif)
Explication:
la source
CJam, 27 octets
Merci à @ MartinBüttner pour cette suggestion
ff
. C'esta+[0X(]&
assez louche, mais bon.Essayez-le en ligne!
la source
Python 2, 70 caractères
la source
Haskell, 78 octets
Exemple d'utilisation:
La fonction
>>
est pratique:<list> >> <string>
fait deslength <list>
copies<string>
, par exemple, les lignes du haut et du basx=10
sont[1..10] >> "10"
->"10101010101010101010"
.la source
1
laquelle crier une sortie unique1
. En outre, vous retournez une liste de chaînes, alors que le défi demande une seule chaîne. À l’époque, nous avions des règles d’IO plus strictes, les règles d’IO souples étant plus récentes.Perl, 72 octets
S'appuie sur les fonctionnalités modernes de Perl:
est automatiquement disponible depuis Perl 5.10 (utilisez simplement la version 5.1 ou ultérieure).
accepte avec plaisir de travailler sur un rvalue (un str_expr pas nécessairement réduit à une variable scalaire) pour donner un r esult (le « r option » à la fin de l'expression régulière) sans altérer la str_expr initiale.
la source
PHP, 151 octets
Désordre absolu, besoin de plus de temps pour optimiser.
s(Number)
vous donne la sortie.la source
Java 8, 280 octets
C'est seulement environ 10 fois plus long que les réponses les plus courtes, ce qui est vraiment bon pour Java!
Exemple d'exécution:
la source
Python 3,
10896148 octetsUngolfed / expliqué:
Comme il s’agit de ma première réponse code-golf , des critiques constructives et / ou des suggestions seraient utiles!
la source
while b!=0:print(a+" "*int(len(a))*c+1);b-=1
. En outre, celawhile b:
équivaut àwhile b!=0
3 octets de plus.Rouille,
141137 octetsA abusé de certains éléments de formatage, sinon cela aurait été beaucoup plus long.
Déballé:
Lien de terrain de jeu
la source
Powershell,
989695838275 octetsScript de test non expliqué et expliqué:
Sortie:
la source