Dans ce défi, vous devez prendre deux nombres (séparés par un espace) comme entrée et sortie d'un triangle rectangle ASCII, composé de x
s.
Le premier nombre sera la largeur et la hauteur du triangle que vous devez sortir. Le deuxième nombre sera dans quel coin l'angle droit sera. Les coins sont numérotés de 1 à 4, en commençant en haut à gauche et dans l'ordre de lecture anglais:
1 2
3 4
Par exemple (entrées et leurs sorties triangulaires respectives):
INPUT | 3 1 | 3 2 | 3 3 | 3 4
------+-----+-----+-----+----
OUT- | xxx | xxx | x | x
PUT | xx | xx | xx | xx
| x | x | xxx | xxx
La sortie de votre programme doit correspondre exactement à ces exemples pour leurs entrées respectives.
L'entrée sera toujours valide: le premier nombre sera un entier ≥1 et le deuxième nombre sera 1, 2, 3 ou 4.
C'est du code-golf ; le code le plus court (en nombre de caractères) gagne.
code-golf
geometry
generation
Poignée de porte
la source
la source
(⍎⍵⌷'functions')
partie avant de décider comment interpréter l'ensemble de la déclaration? Considérez par exemple1+(⍵⌷'12+')|40
. Il ne saurait même pas s'il|
est monadique ou dyadique avant d'avoir⍎
ingéré cette portion entre parenthèses. L'arbre de syntaxe abstrait entier change en fonction de l'évaluation.1+(⍎⍵⌷'12+')|40
... ne me laissera pas éditer.f ← { [ }
ne donne pas d'erreur!f 1÷0
donne ... une erreur de domaine ! (à cause de la division par zéro). Ce n'est que lorsque vous appelez la fonction commef 123
vous obtenez une erreur de syntaxe . Voici: imgur.com/jtmdi4BRubis,
11611510996Je vais commencer par ma propre solution.
Je sais juste que je vais me faire battre par une solution GolfScript à 30 caractères presque instantanément: P
Merci à minitech d'avoir rasé 19 personnages (wow)!
la source
==0
, vous pouvez utiliser<1
.?x*x
enregistre un autre personnage. Aussi,puts i[1]%2<1?t.rjust(s):t}
ferait l'affaire, non??
? Est-ce nécessaire? De plus, je pense que vous pouvez faire la même chose avec ler=
.1?
comme un seul jeton, et l'espace de fin parce que sinon il analyse comme?t
(ce qui est équivalent à't'
). Comment proposez-vous de restructurer lar
pièce?GolfScript (
3433 caractères)C'est dommage que les coins ne soient pas numérotés en rotation, car cela permettrait une approche plus élégante de la construction d'un tableau puis de sa rotation
n
:la source
C # - 195
Formaté:
la source
Golfscript,
39 3635 caractèresdémo en direct: http://golfscript.apphb.com/?c=OyczIDInCn5cOnkseycgJyoneCd5Kit5PC0xIDIkPyV9JS0xQDI%2BPyVuKgo%3D
dommage que ce ne soit pas 30 caractères comme demandé
la source
1${-1%}*
par-1 2$?%
et\2>{-1%}*
par\2>-1\?%
vous rapportera 2 caractères.-1 2
peut être écrit0~2
~(\:y,{{>'x '=}+y,%0~2$?%}%\2&(%n*
Mathematica 122 (104?)
Selon une interprétation libérale de la "sortie", les éléments suivants (104 caractères) fonctionneront.
Si la saisie sous forme de liste était autorisée, les éléments suivants (75 caractères) suffiraient:
la source
J,
595542383736 caractèresS'il est permis d'avoir l'entrée à la fin du programme:
Sinon (pour 3 caractères supplémentaires):
Usage:
ou
Je pense que cela pourrait être un peu plus court car la plupart des caractères sont des crochets et des majuscules pour le garder dans un style implicite.
Éditer
À l'aide d'un gérondif et le verbe de l'agenda a coupé quelques caractères, mais il y a encore trop de majuscules à mon goût.
Edit 2
C'est un peu plus comme ça. La suppression de l'agenda pour une liste du nombre de rotations nécessaires supprime la plupart des supports supplémentaires et quelques plafonds.
Edit 3
Débarrassé du dernier capuchon étranger et d'une paire de supports dans le processus. Besoin de trouver un moyen moins coûteux d'encoder le nombre de rotations nécessaires.
Edit 4 Utilisez un préfixe au lieu d'un suffixe pour couper un caractère. Permet une manière différente de créer la liste qui n'enregistre aucun caractère. Bugger.
Edit 5
Utilisation d'une formule pour couper un autre caractère. Je pense toujours que ce morceau pourrait être plus court.
la source
Python 106 caractères
la source
Python 3, 91
Basé sur la réponse d'Abhijit.
Modification de la création de la chaîne de sortie pour éviter la somme des chaînes et les vilains
1
s dans lerange
. Python 3 se débarrasse deraw_
inraw_input
, mais oblige à utiliser//
pour la division entière et à ajouter des parenthèses pourprint
, ce qui ne sauvegarde qu'un seul caractère.la source
Chaton , 140
Non golfé:
Preuve que je dois implémenter la surcharge et étoffer la bibliothèque standard.
la source