Ihre Aufgabe: Geben Sie eine Zahl ein n
und generieren Sie ein "+" - Zeichen, n
das nicht in der Mitte des Zeichens steht . Wenn dies verwirrend ist, überprüfen Sie die Testfälle.
Standard-Eingabemethoden: Die Ausgabe muss eine Zeichenfolge sein oder gedruckt werden. Es gelten Standardlücken.
Input: 1
Output: + ] 1 away from center `+`.
Input: 2
Output: + ] 2 away from center `+`.
+++ ] 1 away from center `+`.
+
Input: 3
Output: + ] 3 away from center `+`.
+
+++++
+
+
Das ist Code-Golf , also gewinnt der kürzeste Code!
Antworten:
Kohle , 5 Bytes
Probieren Sie es online!
quelle
P+
= Kreuz).Python 2 , 53 Bytes
Probieren Sie es online!
quelle
JavaScript (ES6),
6765636059 Bytesx-1
, dem ersten mit--x
und dem zweiten mit, gespeichertx
."\n"
durch`[newline]`
.repeat
auf eine Weise zu definieren, die die Größe reduzierte. (Mit der ehrenvollen Erwähnung von Marie auch für ihre Bemühungen)Versuch es
quelle
"\n"
durch zwei Backticks und eine wörtliche Newline zwischen ihnena='repeat',v=.....
und` `[a]
repeat()
aber meine ersten Versuche waren 2 oder 3 Bytes größer, also habe ich darauf verzichtet! Ich werde es mir noch einmal ansehen, wenn ich wieder vor einem Computer stehe.x=>(v=(` `[r='repeat'](--x)+`+<newline>`)[r](x))+`+`[r](x*2+1)+`<newline>`+v
MATL , 11 Bytes
Probieren Sie es online!
Erklärung mit Beispiel
Überlegen Sie
n = 3
.quelle
Kohle ,
1613 BytesProbieren Sie es online!
Verwendet einen anderen Ansatz als die andere Antwort von Charcoal.
Erläuterung
Jetzt ist die obere linke Ecke fertig und sieht ungefähr so aus:
Der letzte Schritt ist der Schlüssel zu diesem Programm. Er verwendet den oberen linken Teil des Plus, um den Rest des Plus durch Spiegeln in südöstlicher Richtung (nach rechts und unten) zu generieren.
quelle
Shakespeare Programming Language ,
749743 BytesProbieren Sie es online!
Bearbeiten: Die Antwort wurde mit der offiziellen SPL-Implementierung kompatibel gemacht. Ich konnte sie vorher nicht zum Laufen bringen.
Golfed 6 Bytes, weil Szenennummern nicht aufeinander folgen müssen.
Erklärung :
SPL ist ein Esolang, der so gestaltet ist, dass er Shakespeares Stücken ähnelt. Positive Substantive haben den Wert 1 (hier wird cat verwendet) und negative Substantive den Wert -1 (keine wurden verwendet, aber pig ist eine davon). Adjektive modifizieren eine Konstante, indem sie sie mit 2 multiplizieren.
Alles bis zum ersten Punkt ist der Titel und spielt keine Rolle.
Die Zeichen sind ganzzahlige Variablen, jede hat auch einen Stapel, aber ich musste diese Funktion nicht verwenden.
Acts und Szenen werden als Goto-Labels verwendet
Es ist nur sinnvoll, wenn genau zwei Charaktere gleichzeitig auf der Bühne stehen.
Liest eine Nummer und erinnert Ford daran.
Wie Sie sehen, ist Engrish in SPL gültig. Dies macht Pucks Wert "der Unterschied zwischen einer Katze und mir". Aber was bedeutet es?
cat
ist ein positives Nomen, also ist esPuck = 1 - Ford
.Exeunt ist nur ein Plural von "exit" und ohne Argumente bedeutet dies, dass jeder auf der Bühne verlässt.
Es ist auch,
Page = 1 - Ford
aber es wird von einem anderen Schauspieler gesprochen, alsoI
wäre es falsch. Da es sich um eine Schleife handelt, kann ich den Wert von nicht einfach kopierenPuck
.Ziemlich unkompliziert.
Ajax = Puck * Page
."as [adj] as" ist der
==
Operator.Wenn Ajax == 0 ... "cat" ist 1, "big cat" ist 2, "big big cat" ist 4 und so weiter. Nach dem Ersetzen der einfachen Konstanten erhalten wir "die Summe der Summe der Summe von 32 und 8 und 2 und 1" -> "die Summe der Summe von 40 und 2 und 1" -> "die Summe von 42 und 1" -> "43", das ist das ASCII für +.
ansonsten ist es nur "fat fat fat fat fat cat", also erhält Ajax den Wert 32, den ASCII-Wert für ein Leerzeichen.
Dies ist der Befehl zur Ausgabe eines Zeichens.
Dies ist ein Schleifenkonstrukt. "Sie summieren Sie und Katze" erhöht Seite und
if(Page != Ford) goto Scene III
. Der Rest des Programms verwendet dieselben Komponenten, daher ist hier eine besser lesbare Pseudocode-Version:quelle
If not,let us return to Scene III.
" -1; bricht die vierte Mauer: PJelly , 11 Bytes
Probieren Sie es online!
quelle
Mathematica, 39 Bytes
CrossMatrix
ist eine integrierte Funktion, die eine Matrix der erforderlichen Form mit1
s anstelle von+
s und0
s anstelle von Leerzeichen generiert . Wenn wir diese Matrix mit multiplizieren"+"
das1
s durch+
s ersetzt, während das0
s unverändert bleibt (offensichtlich ...0*x = 0
und1*x = x
, richtig?). Dann ersetzen wir die Nullen manuell durch Leerzeichen/. 0->" "
. Zum Schluss drucken wir jede Zeile der Matrix mitPrint@@@(...)
.quelle
Print
man so etwas benutzen kann.C 69 Bytes
Nicht sehr interessant ... Überquert das Quadrat und druckt das entsprechende Zeichen aus.
quelle
Rubin,
4140 BytesProbieren Sie es online!
quelle
GNU sed ,
10499 Bytes-5 danke an seshoumara
Beinhaltet +1 für
-r
Nimmt unäre Eingaben auf .
Probieren Sie es online!
quelle
s/( *2)2(2*)/\1\n\1\2/
unds/(.*)(\n1*)/&\n\1/
wie hier gezeigt für eine Gesamtpunktzahl von 99 verwenden.Lua
113, 90 Bytesquelle
Python 2 , 52 Bytes
Probieren Sie es online!
Eine 53-Byte-Alternative ( TIO ):
quelle
R, 54 Bytes
7 Bytes sparen dank @Jarko Dubbeldam:
vorherige Antwort:
quelle
function(n){a=matrix("",n*2-1,n*2-1);a[n,]="x";a[,n]="x";a}
wären also 59 Bytes!matrix("",y<-n*2-1,y)
a[n,]=a[,n]="x"
funktioniert auch und spart ein paar Bytes.scan()
indem Sie es als Programm anstatt als Funktion verwenden:n=scan();a=matrix("",y<-n*2-1,y);a[n,]=a[,n]="+";a
PowerShell , 48 Byte
Probieren Sie es online!
Übernimmt die Eingabe
$n
. Beginnt mit der Erstellung einer Folge von--$n
Leerzeichen, die mit verknüpft sind+
. Das wird mit dem Komma-Operator (neu dekrementiert)$n
mal in ein Array konvertiert . Dieses Array wird$x
in Parens gespeichert und eingekapselt, um eine Kopie in die Pipeline einzufügen.Wir machen dann den mittleren Abschnitt, der
+
mit der entsprechenden Anzahl von Malen multipliziert wird. Das ist noch in der Pipeline. Zum Schluss setzen wir$x
die Pipeline wieder auf.Diese werden bei Programmabschluss alle in der Pipeline belassen, und das implizite
Write-Output
fügt eine neue Zeile zwischen die Elemente ein.quelle
Perl 5 , 45 Bytes
44 Byte Code +
-p
Flag.Probieren Sie es online!
Einige ähnliche (aber immer noch unterschiedliche) Ansätze:
48 Bytes (47+
-p
):50 Bytes (49+
-n
):quelle
Python 2 ,
60,56 BytesProbieren Sie es online!
quelle
CJam , 23 Bytes
Probieren Sie es online!
Erläuterung
Das fühlt sich ein bisschen suboptimal an, aber die Idee ist, die folgenden zwei Gitter zu überlagern:
Welches gibt das gewünschte Ergebnis.
quelle
CJam, 17
Probieren Sie es online aus
Erläuterung:
quelle
Oktave,
3631 BytesInspiriert von der MATL-Antwort von @LuisMendo.
Probieren Sie es online!
Vorherige Antwort:
Probieren Sie es online!
quelle
05AB1E ,
151412 BytesProbieren Sie es online!
-2 danke an Emigna.
quelle
F'+}¹·<×)û.c
für 12. tunPython 2, 65 Bytes
Probieren Sie es online!
quelle
JS (ES6),
887473 BytesWahrscheinlich kann mehr golfen werden.
quelle
"\n"
durch zwei Backticks und eine wörtliche Newline zwischen ihnenJavaScript (ES6), 60 Byte
Gibt zwei nachgestellte Zeilenumbrüche aus. Alternative Formulierung, auch 60 Bytes:
quelle
PowerShell, 48
Scheint nicht kürzer zu werden (und so ziemlich der gleiche Ansatz wie bei der anderen Lösung):
oder
quelle
V ,
191815 Bytes3 Bytes dank @ nmjcman101 unter Verwendung von
.
und abgegoltenÒ+
Probieren Sie es online!
quelle
REXX, 81 Bytes
quelle
PHP, 68 Bytes
83 Bytes
quelle
$m=$argn
und vorab erhöhen,$i
anstatt sie nachträglich zu erhöhen. Sie können ein Byte auch speichern, indem Sie die$m
Zuweisung nach oben verschieben und die Klammern entfernen.for(;$i<$c=-1+2*$m=$argn;)echo"\n".str_pad("+",$c," +"[$m==++$i],2);
while(++$y<2*$n=$argn)echo"\n",str_pad("+",$n*2-1," +"[$y==$n],2);
66 Bytes (und speichern Sie eine weitere mit einem physischen Zeilenumbruch)MUMPS, 48
5053Bytesquelle
Brain-Flak , 216 + 1 = 217 Bytes
+1 Bytes von der
-A
FlaggeProbieren Sie es online!
Erklärung zu kommen
quelle