Bei dieser Herausforderung müssen Sie zwei Zahlen (durch ein Leerzeichen getrennt) als Eingabe und Ausgabe eines ASCII-Dreiecks aus x
s verwenden.
Die erste Zahl ist die Breite und Höhe des Dreiecks, das Sie ausgeben sollten. Die zweite Zahl ist, in welcher Ecke sich der rechte Winkel befindet. Die Ecken sind von 1 bis 4 nummeriert, beginnend oben links und in englischer Lesereihenfolge:
1 2
3 4
Zum Beispiel (Eingänge und ihre jeweiligen Dreiecksausgänge):
INPUT | 3 1 | 3 2 | 3 3 | 3 4
------+-----+-----+-----+----
OUT- | xxx | xxx | x | x
PUT | xx | xx | xx | xx
| x | x | xxx | xxx
Die Ausgabe Ihres Programms muss genau mit diesen Beispielen für die jeweiligen Eingaben übereinstimmen.
Die Eingabe ist immer gültig: Die erste Zahl ist eine Ganzzahl ≥1 und die zweite Zahl ist 1, 2, 3 oder 4.
Das ist Code-Golf ; Der kürzeste Code (in Zeichenanzahl) gewinnt.
code-golf
geometry
generation
Türknauf
quelle
quelle
(⍎⍵⌷'functions')
Teil nicht tatsächlich bewerten, bevor es entscheidet, wie die gesamte Aussage zu interpretieren ist? Betrachten Sie zum Beispiel1+(⍵⌷'12+')|40
. Es würde nicht einmal wissen, ob|
es monadisch oder dyadisch ist, bevor⍎
dieser Teil in Klammern gesetzt wird. Der gesamte abstrakte Syntaxbaum ändert sich je nach Auswertung.1+(⍎⍵⌷'12+')|40
... werde mich nicht bearbeiten lassen.f ← { [ }
gibt keinen Fehler!f 1÷0
gibt ... einen Domainfehler ! (wegen der Division durch Null). Nur wenn Sie die Funktion so aufrufen, erhaltenf 123
Sie einen Syntaxfehler . Siehe: imgur.com/jtmdi4BRuby,
11611510996Ich werde mit meiner eigenen Lösung beginnen.
Ich weiß nur, dass ich fast sofort von einer GolfScript-Lösung mit 30 Zeichen geschlagen werde: P.
Vielen Dank an minitech für das Rasieren von 19 Zeichen (wow)!
quelle
==0
können Sie verwenden<1
.?x*x
speichert ein anderes Zeichen. Außerdemputs i[1]%2<1?t.rjust(s):t}
würde der Trick, nicht wahr??
? Ist das notwendig Ich denke auch, dass Sie das Gleiche mit dem tun könnenr=
.1?
als einzelnes Token analysiert wird , und das nachfolgende Leerzeichen, weil es sonst als?t
(was äquivalent zu't'
) analysiert wird . Wie schlagen Sie eine Umstrukturierung desr
Teils vor?GolfScript (
3433 Zeichen)Es ist eine Schande, dass die Ecken nicht in Rotation nummeriert sind, da dies einen eleganteren Ansatz ermöglichen würde, ein Array zu erstellen und es dann
n
mal zu drehen :quelle
C # - 195
Formatiert:
quelle
Golfscript,
39 3635 ZeichenLive-Demo: http://golfscript.apphb.com/?c=OyczIDInCn5cOnkseycgJyoneCd5Kit5PC0xIDIkPyV9JS0xQDI%2BPyVuKgo%3D
Schade, dass es nicht wie gewünscht 30 Zeichen sind
quelle
1${-1%}*
mit-1 2$?%
und\2>{-1%}*
mit erhalten\2>-1\?%
Sie 2 Zeichen.-1 2
kann geschrieben werden0~2
~(\:y,{{>'x '=}+y,%0~2$?%}%\2&(%n*
Mathematica 122 (104?)
Unter einer liberalen Interpretation von "Ausgabe" wird das Folgende (104 Zeichen) funktionieren.
Wenn die Eingabe in Form einer Liste zulässig wäre, würde Folgendes (75 Zeichen) ausreichen:
quelle
J,
595542383736 ZeichenWenn es erlaubt ist, die Eingabe am Ende des Programms zu haben:
Wenn nicht (für zusätzliche 3 Zeichen):
Verwendungszweck:
oder
Ich denke, dies könnte ein bisschen kürzer sein, da die meisten Zeichen Klammern und Kappen sind, um es in einem impliziten Stil zu halten.
Bearbeiten
Mit einem Gerundium und dem Agenda-Verb wurden einige Zeichen abgeschnitten, aber es sind immer noch zu viele Großbuchstaben für meinen Geschmack vorhanden.
Edit 2
Das ist ein bisschen mehr so. Wenn Sie die Agenda für eine Liste der erforderlichen Umdrehungen löschen, werden die meisten zusätzlichen Klammern und einige Kappen entfernt.
Bearbeiten 3
Die letzte überflüssige Kappe und ein Paar Klammern wurden dabei entfernt. Sie müssen einen günstigeren Weg finden, um die Anzahl der erforderlichen Umdrehungen zu codieren.
Bearbeiten 4 Verwenden Sie das Präfix anstelle des Suffix, um ein Zeichen abzuschneiden. Ermöglicht eine andere Art der Erstellung der Liste, bei der keine Zeichen gespeichert werden. Mistkerl.
Bearbeiten 5
Verwenden Sie eine Formel, um ein anderes Zeichen abzuschneiden. Ich habe immer noch das Gefühl, dass dieses Stück kürzer sein könnte.
quelle
Python 106 Zeichen
quelle
Python 3, 91
Basierend auf Abhijits Antwort.
Die Erstellung der Ausgabezeichenfolge wurde geändert, um die Summe der Zeichenfolgen und der hässlichen
1
s in der zu vermeidenrange
. Python 3 beseitigt dasraw_
Inraw_input
, macht es jedoch erforderlich, es//
für die Ganzzahldivision zu verwenden und Klammern für hinzuzufügenprint
, sodass nur ein Zeichen gespeichert wird .quelle
Kätzchen , 140
Ungolfed:
Beweise, dass ich Überladung implementieren und die Standardbibliothek ausarbeiten muss.
quelle