Tout le monde aime la géométrie. Alors pourquoi n'essayons-nous pas de coder le golf? Ce défi consiste à saisir des lettres et des chiffres et à créer des formes en fonction de ceux-ci.
L'entrée
L'entrée sera sous la forme de (shapeIdentifier)(size)(inverter)
.
Mais que sont shapeIdentifier, size et inverter?
L'identifiant de forme est l'identifiant du type de forme que vous allez créer avec l' *
art. Voici les identificateurs de forme:
s
- Carrét
- Triangle
La taille sera comprise entre 1-20
, et c'est la taille de la figure.
L'onduleur détermine si la forme sera inversée ou non, ce qui est indiqué par a +
ou a -
. Notez: s3-
== (égal) s3+
car les carrés sont symétriques. Cependant t5-
,! = (N'est pas égal) t5+
.
Les espaces de fin sont corrects dans la sortie, mais les espaces de début ne le sont pas.
Exemples de sortie
Input: s3+
Output:
***
***
***
Input: t5+
Output:
*
***
*****
Input: t3-
Output:
***
*
Notes spéciales
L'entrée du triangle sera toujours un nombre impair, donc les triangles se termineront toujours par 1 *
en haut.
La taille du triangle est la taille de la base si l'onduleur est
+
et est la taille du haut si l'onduleur l'est-
.
la source
Réponses:
Pyth,
40363432 octets-1 octet par @isaacg
Un point-virgule à l'intérieur d'un lambda est désormais la valeur globale de la variable lambda, une fonctionnalité qui enregistre un octet.
Essayez-le ici .
Suite de tests .
la source
qez\+
par}\+z
, car+
il ne peut apparaître qu'à la dernière position.Pyth, 38 octets
Suite de tests
Fondamentalement aussi simple que possible. J'aimerais pouvoir combiner une partie de la logique des deux formes, mais actuellement, c'est séparé.
la source
JavaScript (ES6), 142
146 147Modifier 1 octet enregistré thx @ETHproductions Modifier 2 octets sve thx @ user81655
Test (exécuté dans FireFox)
la source
\d
->.
, car il est garanti qu'il y aura exactement un non-chiffre avant et aprèsi.match(/.(.+)(.)/)
->i.match`.(.+)(.)`
Python 2, 106 octets
La sortie est un rectangle parfait, avec chaque ligne remplie d'espaces de fin, ce qui, je suppose, est correct sur la base des commentaires dans l'OP.
Remarque: je ne sais toujours pas si
input
Python 2 est autorisé pour des problèmes comme ceux-ci ...la source
Japt,
6260555251 octetsEssayez-le en ligne!
La première chose que nous devons faire est de déterminer la taille de notre forme. C'est assez simple:
Maintenant, nous organisons la forme de la sortie:
À ce jour, nous avons pris soin de la taille et de la forme de la sortie. Tout ce qui reste est la rotation. Les triangles sont actuellement pointés, nous devons donc les retourner si le troisième caractère est
+
:Et avec une sortie implicite, notre travail ici est terminé. :-)
la source
Python 2,
235193167 167157 octetsMise à jour:
Optimisation significative en utilisant les compréhensions de liste et str.center (). J'ai le sentiment que je peux en faire plus, je vais y jeter un nouveau regard plus tard.
Update 2
10 octets enregistrés avec les suggestions de Sherlock9. Merci beaucoup! :)
Ancienne réponse
Approche assez directe. Écriture ligne par ligne dans une chaîne que je produis à la fin. Les triangles sont toujours dessinés inversés et inversés si nécessaire. Le fait que vous puissiez multiplier une chaîne avec un entier m'a fait économiser beaucoup d'octets!
J'essaierai de jouer au golf un peu plus tard, j'apprécierais des suggestions en attendant, car je ne suis pas encore très expérimenté avec cela.
edit: Il a beaucoup joué avec l'aide des commentaires et volé le calcul de la taille de l'une des autres réponses python. Je pense que c'est le plus que je puisse faire avec cet algorithme.
la source
wc
cela me donne un nombre d'octets de 235. Ai-je tort?raw_input
, en utilisantinput
vous économise 4 octets. De plus, vous n'avez pas besoin des parenthèses dans la deuxième ligne, cela et ne pas utiliser du tout la variablex
(en utilisantif"s"in d
) vous économise encore 9 octets.[]
crochets dans chacun desjoin
appels de fonction. Deuxièmement,if d<"t"else
est plus court et fonctionne parce"s3+"<"t"<"t3+"
qu'en Python. Troisièmement,else"\n".join
et.center(x)for
. Pas d'espace. Ce n'est pas obligatoire. Quatrièmement,print o[::-1]if"+"in d else o
où j'ai réorganisé les choses sur deux octets (un espace entre]
etif
et un autre entreif
et"+"
.JavaScript, 220 octets.
Courir avec
f(input here)
Essayez-le ici!
Les carrés ont des nouvelles lignes de fin, mais pas les triangles. Explication:
la source
Python 2,
157132 octetsLa première tentative a supposé que la
+/-
fin était facultative, m'en débarrasser m'a permis de me raser un tasL'idée ici est de faire une liste qui peut être jetée dans une sortie générique. La partie la plus difficile séparait la longueur de l'entrée.
la source
x=int(d[1]if len(d)<4 else d[1:3])
avec d étant la chaîne d'entrée. C'est 5 octets de moins que votre solution. Vous êtes toujours en avance sur mon python-réponse, je dois essayer de comprendre ce que vous y avez fait et vous battre la prochaine fois! :)x=int(d[1:-1])
c'est beaucoup plus court pour cela, je l'ai vu dans l'autre réponse en python.Rétine ,
10285 octetsLe nombre d'octets suppose que le code source est codé en ISO 8859-1.
Essayez-le en ligne.
Je vais essayer de jouer au golf un peu plus tard.
la source
\n
place de\r\n
. Base64 du contenu:XGQrCiQwJCo6wrYKXigoXHcpKyk6KDorKQokMSQyJDMkMsK2JDAKbWBzJHw6dAoKKWAoLispwrYtKFxEKikKLSQywrYkMQptYF4uCgpHYC4KVGB0czpgICo=
(copie directe depuis Notepad ++). Bizarrement, toute solution en ligne me donne 85 octets ... Hum ...¶
. Ils sont certainement un seul octet dans ISO 8859-1 (avec la valeur 182).Sérieusement, 54 octets
Essayez-le en ligne
@Mego: Tu vois ça
#dXdXεj
? STRING SLICING ????la source
ES6,
178172159 159 octetsCela fonctionne en raison d'une observation intéressante que j'ai faite. Si vous répétez des
n
espaces et desn
astérisques, vous obtenez (par exemple pourn=5
) ceci:Maintenant, prenez des sous-chaînes avec le même début et la même longueur:
Ces sous-chaînes sont exactement les chaînes dont nous avons besoin
t5
.Edit: 6 octets enregistrés grâce à @ edc65.
Edit: économisé 13 octets grâce au masquage du
u+=v
troisième argumentsubstr
qui me permet ainsi de simplifier l'initialisation.la source
t
code de manipulation, il s'est avéré quew
etu
est devenu équivalent et qui m'a sauvé assez d' octets pour me ramener vers le bas à 178![,b,c]=s.match
et ensuites<'t'
... devrait économiser quelques octets (Firefox uniquement)s
me permet d'utilisers<'t'
ce qui m'a fait gagner 6 octets, merci.MATL , 48 octets
Utilise la version actuelle (10.1.0) du langage / compilateur.
Le code accepte les caractères d'entrée dans n'importe quel ordre: tous
s11+
,11s+
et même1+s1
serait des chaînes d'entrée valides.EDIT (30 juillet 2016): le code lié remplace
1L3$)
parY)
pour se conformer aux récents changements de langueEssayez-le en ligne!
Explication
la source
C, 259 octets
non golfé
Les suggestions et critiques sont les bienvenues.
la source
Rubis, 99
Calcule un carré ou un triangle de hauteur
n
et de largeur moyennen
en ajustant la pente des côtés (donc la largeur calculée du triangle est 2n-1 à la base, 1 à la pointe.) Mais il n'imprime que les lignes qui ne dépassent pas lesn
caractères.non golfé dans le programme de test
la source
Jolf, 37 octets, sans concurrence
J'ai ajouté des fonctions après la publication de ce défi, donc cela ne peut pas être considéré pour acceptation. Ceci est codé dans ISO-8859-7. Essayez tous les cas de test ici .
Partie 1: analyser la chaîne
Partie 2: obtenir le résultat
Partie 3: inverser le résultat
la source