Utilisez n'importe quel langage de programmation pour afficher les nombres entre 1 et 99 (y compris les deux) de manière à ce que:
- les nombres sont séparés par un seul espace,
- si un nombre est divisible par 3, il doit être entre parenthèses,
- si un nombre est divisible par 4, il doit être entre crochets,
- si un nombre est divisible par 3 et 4, il doit être à la fois entre parenthèses et entre crochets (avec des crochets plus proches du nombre).
Votre programme doit afficher exactement:
1 2 (3) [4] 5 (6) 7 [8] (9) 10 11 ([12]) 13 14 (15) [16] 17 (18) 19 [20] (21) 22 23 ([24]) 25 26 (27) [28] 29 (30) 31 [32] (33) 34 35 ([36]) 37 38 (39) [40] 41 (42) 43 [44] (45) 46 47 ([48]) 49 50 (51) [52] 53 (54) 55 [56] (57) 58 59 ([60]) 61 62 (63) [64] 65 (66) 67 [68] (69) 70 71 ([72]) 73 74 (75) [76] 77 (78) 79 [80] (81) 82 83 ([84]) 85 86 (87) [88] 89 (90) 91 [92] (93) 94 95 ([96]) 97 98 (99)
code-golf
kolmogorov-complexity
Monolica
la source
la source
Réponses:
05AB1E , 23 octets
-1 octet grâce à Kevin Cruijssen
Essayez-le en ligne!
la source
}?ð?
en]ðý
(fermez à la fois l'if et la boucle, et joignez la pile entière par des espaces)Å€
Python 2 ,
686560 octetsEssayez-le en ligne!
la source
R , 61 octets
Essayez-le en ligne!
la source
Gelée ,
2120 octetsEssayez-le en ligne!
Comment ça marche
la source
D , 110 octets
Essayez-le en ligne!
Porté depuis la réponse C ++ de @ HatsuPointerKun.
la source
Fusain , 30 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
la source
J ,
5453 octets1 octet de moins grâce à @Jonah
Essayez-le en ligne!
la source
stdout
ici ... Je n'ai jamais vu ça auparavant. @FrownyFrog#
. J'avais introduit un verbe auxiliaire pour entourer avec()
et[]
:g=. {.@[ , ":@] , {:@[
. ugh la verbosité!LF
au lieu de_
. ce dernier semble fonctionner aussi.C, C ++,
136133131129128124 octets-5 octets grâce à Zacharý et inspiré par la fonction write () en langage D (voir la réponse de Zacharý)
-2 octets grâce à mriklojn
-12 octets pour la version C grâce à mriklojn
-4 octets grâce au plafond
Optimisation spécifique C: 115 octets
la source
inf f()
chose? Désolé de supprimer mes commentaires, je pensais que j'avais quelque chose de plus court (je ne l'ai pas fait)printf
quelque chose. Ne pourriez-vous pas utiliser le C stdio alors?int i
extérieur de la fonction (dans la portée globale), sa valeur par défaut est 0 et le type de données par défautint
. Cela entraînerait votre boucle à partir de 0, et pour résoudre ce problème, vous pourriez déplacer l'incrément dans l'expression de condition dans votre boucle for, ce qui ressemblerait ài;f(){for(;++i<=99;)
")\0"+i%3
place dei%3?"":")"
. De plus, je pense que vous devez ajouteri=0
au début de la boucle.Powershell, 60 octets
Explication:
$_, "($_)", "[$_]", "([$_])"
[!($_%3)+2*!($_%4)]
Script de test moins golfé:
Sortie:
la source
MathGolf ,
41403429 octetsREMARQUE: il a un espace de fin
Seule ma deuxième réponse MathGolf ..
-5 octets grâce à @JoKing .
Essayez-le en ligne.
Explication:
la source
q
pouvait être omis et cela se faisait implicitement en boucles. De plus, je ne savais pas qu'il y avait une fonction intégrée 2/3/4 cordes. Dommage que cette rotation ne fonctionne pas avec le tableau encapsulé.Haskell , 77 octets
Essayez-le en ligne!
Je me demande si cela
show[n]
peut être utilisé pour raccourcir les choses, jusqu'à présent en vain .la source
Lua,
161123 octetsEssayez-le en ligne!
Non golfé:
la source
Python 2 ,
1059788868584 octetsEssayez-le en ligne!
la source
C (gcc) , 84 octets
Il y a un octet nul au début de chaque "chaîne de parenthèses".
Essayez-le en ligne!
la source
PowerShell ,
6762 octetsEssayez-le en ligne!
Fondamentalement, un FizzBuzz utilisant des multiplications de chaînes multipliées par des variables booléennes (implicitement converties en 1 ou 0). Ces chaînes sont laissées sur le pipeline et rassemblées dans un bloc de script entre guillemets. Étant donné que la valeur
$OutputFieldSeparator
par défaut pour un tableau est des espaces, cela nous donne implicitement des éléments de tableau délimités par des espaces.la source
C #,
124117123 octets-5 octets grâce à Kevin Cruijssen
Testez avec:
la source
x
place dei
, donc ne pas avoir à vous soucier duint
? (Vous devrez toujours le régler, bien sûr).i
et le fait que je peux l'initialiser à 0 quand jeInvoke
. Mais cela ne signifierait-il pas que je devrais inclure la déclaration de t (Action<int>
) et de l'appel (t.Invoke(0)
) dans le bytecount?x=>{for(x=0;x++<99;)Console.Write((x%3==0?"(":"")+(x%4==0?"[":"")+x+(x%4==0?"]":"")+(x%3==0?")":"")+(x%99==0?"":" "));};
fonctionnerait.==0
peuvent l'être<1
.Rouge ,
9997 octetsEssayez-le en ligne!
la source
Rubis ,
7266 octetsMerci à @ jonathan-frech et @ conor-obrien pour une coupe supplémentaire.
la source
a.join b
pour un tableaua
et une chaîneb
équivaut àa*b
PowerShell,
988274676362 octetsUn énorme -31 octets grâce à @Veskah -5 octets grâce à @ ASCII uniquement
Essayez-le en ligne!
Je ne suis toujours pas sûr de ce que j'ai fait ici.
la source
"$a"
continuerez de la remplacer dans la valeur. (Remarque: les guillemets simples ne remplacent pas$foo
, seuls les guillemets doubles). Une autre astuce consiste à ne se soucier que de 0 ou 1, vous pouvez donc utiliser la logique booléenne pour enregistrer un octetperl -E, 60 octets
Certains octets peuvent être enregistrés si nous pouvons utiliser des sauts de ligne entre les nombres: dans ce cas, nous pouvons supprimer le
$,=$";
, le transformermap
enfor
boucle, tout en déplaçant lesay
dans la boucle.la source
/^1$|^(11+?)\1+$/
?Perl 6 ,
5148 octetsEssayez-le en ligne!
la source
Lot, 145 octets
Le code tombe dans le sous-programme, mais la chaîne a déjà été imprimée à ce stade, de sorte que le code s'exécute sans danger.
la source
PHP 103
for(;$i<1e2;$i++)$a.=$i%12==0?"([$i]) ":($i%3==0?"($i) ":($i%4==0?"[$i] ":"$i "));echo substr($a,5,-1);
https://www.ideone.com/SBAuWp
la source
Propre , 100 octets
Essayez-le en ligne!
la source
sfk , 225 octets
Essayez-le en ligne!
la source
Bash, 61 octets
-14 octets, merci à Dennis
explication
Assez simple:
seq
produit 1..99awk
avec le séparateur d'enregistrement de sortie (ORS
) défini sur espace de sorte que la sortie soit une seule ligne.Essayez-le en ligne!
la source
JavaScript (Node.js) , 57 octets
Essayez-le en ligne!
Changé en communauté car l'optimisation en dépend trop
la source
${n%4?n:`[${n}]`}
PHP, 65 octets
ou
(nécessite PHP 5.5 ou version ultérieure)
Courez avec
-nr
ou essayez-les en ligne .la source
Python 2 , 78 octets
Essayez-le en ligne!
J'ai imaginé cette approche cool,
'([%0d])'
mais je ne peux pas raccourcir les expressions.la source
Java 8,
9291 octets-1 octet grâce à @Dana
i->{for(;i++<99;)out.printf((i>1?" ":"")+(i%12<1?"([%d])":i%3<1?"(%d)":i%4<1?"[%d]":i),i);}
Essayez-le en ligne!
Solution alternative, 82 octets (avec espace de fin dans la sortie - je ne sais pas si cela est autorisé):
i->{for(;i++<99;)out.printf((i%12<1?"([%d])":i%3<1?"(%d)":i%4<1?"[%d]":i)+" ",i);}
Explication:
for(;i++<99;)
- une boucle for qui va de la valeur dei
(réutilisée en entrée, prise à 0 dans ce cas) à 99out.printf(<part1>+<part2>,i);
- formate la chaîne avant de l'imprimer immédiatement sur stdout avec la valeur dei
where
<part1>
is(i>1?" ":"")
- imprime l'espace avant d' imprimer le nombre sauf si ce nombre est 1, auquel cas il omet l'espaceet
<part2>
est(i%12<1?"([%d])":i%3<1?"(%d)":i%4<1?"[%d]":i)
- s'ili
est divisible par 3 et 4,i
a des crochets carrés et ronds autour; sinon sii
est divisible par 3,i
a des parenthèses rondes; sinon sii
est divisible par 4,i
a des crochets; sinon,i
n'a pas de crochets.la source
(i>1:" ":"")
i->{for(;i++<99;)out.printf((i>1?" ":"")+(i%12<1?"([%d])":i%3<1?"(%d)":i%4<1?"[%d]":i),i);}
?