Pour la pratique du golf, j'ai fait les devoirs dans le cours d'introduction à Python de ma petite amie. J'ai trouvé que pour cette mission, il y avait plusieurs stratégies qui se sont rapprochées du nombre de personnages, et je suis sûr que les gens ici peuvent trouver des moyens encore meilleurs. Bien que je sois plus intéressé par les moyens de le faire en Python, je voudrais savoir le plus de golf que ce programme peut obtenir, c'est donc le golf de code et les réponses les plus courtes.
Les règles:
La mission est décrite ci-dessous. L'utilisateur doit être invité à entrer deux fois, bien que les invites n'aient rien à dire et puissent être dans un ordre différent.
Des échappatoires standard s'appliquent.
Affectation 3: flèches
Écrivez un programme qui invite l'utilisateur à entrer un certain nombre de colonnes et imprime le modèle comme indiqué ci-dessous. Vous pouvez supposer que l'utilisateur fournira des nombres positifs. Votre programme doit gérer les flèches gauche et droite. Voici quelques exemples d'exécutions:
How many columns? 3
Direction? (l)eft or (r)ight: r
*
*
*
*
*
How many columns? 5
Direction? (l)eft or (r)ight: l
*
*
*
*
*
*
*
*
*
Réponses:
Pyth, 23 octets
Peut être valide ou non, selon la réponse à ce commentaire . Quoi qu'il en soit, j'ai trouvé cela soigné et, s'il n'est pas valide, les autres réponses Pyth sont également invalides. ;)Eh bien, c'est valable , car j'ai apparemment manqué l'évidence flagrante. : /EDIT: J'AI GAGNÉ !!!! OUI !!!! Première fois! :RÉ
Démo en direct.
la source
m+*\ d\*Q
au lieu de cette chose énumérée. Enregistre 2 octets.Pyth, 27
Essayez-le en ligne
L'idée de base ici est de construire une chaîne qui, par exemple 5, ressemble à ceci:
Et puis retournez-le à l'envers si nous obtenons
l
comme entrée. Ensuite, nous prenons toutes lesinput-1
lignes de cette chaîne, sauf les dernières , et nous l'imprimons.la source
Python 2,
8179 octetsPeut-être encore jouable au golf, mais nous verrons :)
la source
l
etr
. Je n'avais pas réalisé que l'entrée esteval
dans le même environnement que le code.Pyth,
302827 octetsEssayez-le en ligne.
Apparemment, je suis actuellement à égalité avec FryAmTheEggman avec une approche complètement différente. (Je pense que l'on est ingénieux.)
Exemple
Explication
la source
PowerShell,
9185102 octets$c
. Nous soustrayons un car chaque colonne a également un*
et nous ne sommes intéressés que par le nombre d'espaces requis.1
, print*
et exit - le reste du script ne fait aucune différence. +-eq
uall
, puis crée un tableau basé sur l'indexation dans un tableau de tableaux générés dynamiquement en fonction de la valeur de$c
. La magie. Essentiellement, c'est le nombre d'espaces par ligne dont nous avons besoin.5 r
cette collection tiendrait(0,1,2,3,4,3,2,1,0)
.%
boucle Foreach-Object , où nous générons une chaîne de X espaces, puis le*
Exemple d'utilisation:
Édition - variable supprimée
$e
en canalisant directement la collectionÉdition2 - représente correctement 1 colonne, maintenant
+ S'il est toujours obligatoire de prendre une entrée pour la direction pour les flèches à 1 colonne (je soutiens que ce n'est pas le cas), nous pouvons échanger le positionnement du
Read-Host
et perdre quelques octets supplémentaires en réintroduisant la$d
variable, pour 106 :la source
TI-BASIC,
756557545047 octetsMerci à @ThomasKwa pour le calcul correct des octets et le golf de 10 octets .
Testé sur ma TI-84 + Silver Edition.
Première soumission TI-BASIC, suggestions de golf bienvenues (je ne connais pas encore beaucoup de trucs). Si le nom joue un facteur dans la mémoire affiché, celui-ci était de 3 caractères au lieu de 1 (j'ai regardé le nombre d'octets sur ma calculatrice elle-même). Ce programme est limité par les
output
restrictions de la fonction (je pense aux flèches de longueur 4), mais je pourrais probablement passer àtext
, qui s'affiche graphiquement si c'est trop faible.Notez que cela n'efface pas non plus l'écran ni ne le met en pause.
J'ai vraiment l'impression que l'équation que j'utilise peut être jouée davantage. Il est également très mal d'exclure le guillemet final.
la source
Ans
est gratuit, car vous ne l'utilisez pas pour la saisie etOutput(
ne le modifiez pasAns
. Utilisez-le et supprimez la variableA
. Vous pouvez attribuer en utilisant-2(Str1="R
; pas besoin d'un conditionnel.-2
. Faites justeStr1="R
pour la deuxième ligne. Cela fait la quatrième ligneOutput(I,(1-2Ans)abs(I-L)+AL+1,"*
, qui vous donne 4 octets de plus. Mais attendez, il y a un idiome pour(1-2Ans)
—it'scos(πAns)
, qui enregistre un octet, plus un de plus car nous obtenons la parenthèse ouverte gratuitement!Python 2, 89 octets
Fonctionne presque de manière identique à ma réponse Pyth, calculant simplement le nombre correct d'espaces à la volée.
la source
PowerShell,
104 10297 octetsNB. si vous souhaitez l'exécuter à nouveau, ouvrez un nouveau PowerShell ou
rv o
réinitialisez l'état de la variable.Comparé à la lacune des autres, cela fait mal. [Fait moins mal à 97 qu'à 122]. Deux parties, ni très surprenantes; lit un certain nombre de colonnes, utilise un substitut d'opérateur ternaire tableau-index pour obtenir un décalage, et exécute une fonction d'onde à partir du décalage (et un ajustement afin qu'il ne tombe pas dessus
mod 0
).(Et aïe ai-je passé des siècles sur cette fonction d'onde, incapable de repérer mon malentendu et de taper tous les parens honnêtes, ce n'est pas LISP).
la source
Python 2,
9889 octetsUn peu plus long.
Usage
la source
NameError: name 'l' is not defined
,NameError: name 'd' is not defined
.i
etd
en utilisant simplementrange(P())
etif P()=='l'
...)f=[...][::2*('r'>input())-1]
faitPerl, 85 octets
Usage:
la source
simplearrows2.pl
ça ne semble pas aussi bon! : PPHP, 156 octets
Crée deux tableaux, comme ceci:
utilise ensuite l'union de tableau
$s+$t
ou$t+$s
pour les combiner etarray_splice
pour supprimer l'élément au milieu. Enfin sortie en utilisant<?=join()
la source
Python 2,
111109104 octetsSolution assez simple. Je suis sûr qu'il peut être joué plus au golf. Pour ceux qui ne savent pas,
~x+n
c'est la même chose quen-1-x
.Essayez-le en ligne
Edit : Cela a été joué dans la dernière ligne:
la source
Matlab,
10910596 octetsMerci à @beaker de m'avoir sauvé 9 octets .
la source
x=x*10+32;
Rubis, 118 octets
2.times{
- deux fois, bien sûr ...l,d=gets.split;
- obtenir l'entréel=l.to_i;
- changer la longueur en un entiera=(d=="r"?(0..l-1):(l-1).downto(0)).to_a;
- créer un tableau de la plage de 0 à la longueur(a+a[0..-2].reverse).each{|x| puts "#{' '*x}*"}
- itérer, transformer en cordes pour faire les flèchesPas exactement le plus grand golf de tous les temps, mais bon.
la source
PowerShell,
9894 octetsSi je pouvais trouver un moyen de mettre le Read-Host pour la direction à l'intérieur de la boucle foreach-object, mais seulement l'inviter une fois que je serais en mesure d'économiser quelques octets.
Modifier: 94 octets. Au lieu de tester pour gauche, testez pour droite (simplifie la boucle).
98 octets d'origine:
la source
$_
variable - Hobbit astucieux. Très intelligent, et j'ai appris quelque chose aujourd'hui.> <> , 60 octets
2 octets perdus en fin de compte, comme c'est irritant!
En raison du fonctionnement de l'entrée dans> <>, il n'est pas possible d '«attendre» l'entrée - la
i
commande vérifie si un caractère d'entrée est disponible sur STDIN. S'il y en a un, il pousse la valeur ASCII de ce caractère et pousse -1 sinon.Cela signifie que, pour utiliser ce programme, le nombre et la direction doivent déjà être prêts sur STDIN, par exemple
3r
pour une flèche de taille 3 pointant vers la droite. Je ne sais pas si cela disqualifie cette entrée, faites-moi part de vos réflexions: o)Je rédigerai également une description si quelqu'un en veut.
la source
:
pour 10?)PHP, 154 octets
Cela a l'air vraiment répétitif, mais il fait ce que l'on souhaite:
S'exécute à partir de la ligne de commande comme:
la source
Python, 88 octets
Édité
la source