Die erste Zeile besteht aus ceil(n/2)
Elementen, bei denen jedes Element:<space><odd-number><space>
Die zweite Zeile besteht aus ceil(n/2)
Elementen, aber jedes Element ist / \
nur eines.
Sie können n >= 0
und annehmen n <= 10
.
Beispiele
Eingabe: 3
1 3
/ \/ \
Eingabe: 10
1 3 5 7 9
/ \/ \/ \/ \/ \
Beispiel in Python 3, 103 Bytes:
lambda a:print("".join([" "+str(i)+" "for i in range(1,a+1,2)]+["\n"]+["/ \\"for i in range(1,a+1,2)]))
Kürzester Code in Bytes gewinnt :)
<space><odd-number><space>
, aber die Testfälle haben kein Leerzeichen nach der letzten ungeraden Zahl. Ist es optional? Ist auch die Ausgabe fürn=0
zwei Leerzeilen?Antworten:
05AB1E ,
19151412 Bytes05AB1E verwendet die CP-1252- Codierung.
4 Bytes gespart dank Adnan .
2 Bytes dank Carusocomputing gespart
Probieren Sie es online!
Erläuterung
quelle
Ï
LANGE IST ES GEGANGEN ?! Das scheint super nützlich zu sein.LDÉÏ
ist das gleiche wieÅÉ
und„ ýðì
kann durchðì)»
:) ersetzt werden .)
, nicht wahr?ÅÉðìDg…/ \×»
VerwendetDg
statt¹;î
für ein anderes Byte auch save.Pyke, 16 Bytes
Probieren Sie es hier aus!
17 Bytes und mehr genial
Probieren Sie es hier aus!
Dies verwendet IMHO einen AWESOME-Algorithmus, um sicherzustellen, dass die erste Zeile korrekt ausgerichtet ist.
Dadurch werden alle Zeichen in der Liste mit Zeichenfolgen durch Leerzeichen ersetzt.
~B
enthält alle Zeichen in der Sprache Brain **** und dies ist das erste Mal, dass ich diese Variable verwende.Das Programm
`~Bd.:
macht das:quelle
Python 2, 63 Bytes
Kleiner Trick für die erste Zeile: Sie gibt keine geraden Zahlen aus, sondern nimmt sie als leere Zeichenfolge, was dazu führt, dass ein leeres Leerzeichen (0 wäre da) und doppelte Leerzeichen zwischen den Zahlen ohne Änderung des Bereichs beginnt. Der Nachteil ist ein führendes Feld in der geraden Zahl
n
quelle
Python
23,67656360 BytesHier ist nichts zu verrückt,
ich denke, der erste Abschnitt kann wahrscheinlich kürzer gemacht werden, aber ich bin nicht ganz sicher, wie. Ich nutze die Tatsache, dass in diesem Fall-~n/2
funktionieren wirdceil
.Nachfolgend finden Sie alternative 61- und 65-Byte-Lösungen in Python 2:
Vielen Dank an Rod für das Speichern von 2 Bytes und Artyer für das Speichern eines weiteren Bytes durch Versionswechsel :)
quelle
%(tuple(...))
mit%[*...]
, aber Sie würden zu tun haben-~n//2
range
auf eine Liste gehen, weil 3errange
wie Python 2er sindxrange
.tuple()
(*<iterable>,)
in Python zu cast Tupel 3. Das spart 1 Byte obwohl Sie nach dem Einschaltenn/2
inn//2
Python 3.JavaScript (ES6), 55 Byte
Beachten Sie das Leerzeichen am Ende der zweiten Zeile.
quelle
.replace
vielleicht besser, aber ich habe nichtPython 2, 53 Bytes
Nutzt die Einschränkung
n <= 10
, um die oberste Zeile zu generieren, indem ein Teil einer fest codierten Zeichenfolge abgeschnitten wird.Die Ausgänge für 1 bis 10 sind
Die Ausgabe für 0 besteht aus zwei Leerzeilen.
quelle
Vim,
735956 BytesDies ist eine IMO mit sehr vielen Bytes für ein scheinbar einfaches Problem. Mir fehlt offensichtlich etwas.
Probieren Sie es online!
Unbedruckbares:
quelle
:s;.;/ \\;g
. 2) Bei Ihrem zweiten Ersatzbefehl können Sie die Suche leer lassen, und es wird Ihre letzte Suche verwendet (die zufällig dieselbe ist). Auch&
ist äquivalent\0
und ein Byte kürzer. Du bekommst also:s// & /g
Mathematica, 65 Bytes
Anonyme Funktion. Nimmt eine Zahl als Eingabe und gibt eine Zeichenfolge als Ausgabe zurück. Die Unicode-Zeichen lauten U + 2308 LEFT CEILING für
\[LeftCeiling]
und U + 2309 RIGHT CEILING für\[RightCeiling]
.quelle
WinDbg, 100 Bytes
Die Eingabe erfolgt durch Setzen eines Wertes im Pseudoregister
$t0
.Es sieht so aus, als wäre es hier am kürzesten, den String während des Aufbaus auszudrucken, anstatt ihn zuerst aufzubauen und das Ganze anzuzeigen. Ich hätte eine kürzere Lösung, wenn WinDbg mich an die Adresse schreiben lassen würde
0
.Wie es funktioniert:
Ausgabe für jeden Wert von
n
:quelle
> <> (FISH),
69606855 BytesFügen Sie es in diesen Online-Dolmetscher ein!
Die Zahl 5 in der ersten Zeile ist Ihr Eingabewert (fest codiert als 5, ersetzt durch 0-a oder i für Benutzereingaben).
Bearbeiten 1: Neue Zeilenposition in den ersten Zeilenbereich verschoben (war leer), um insgesamt 9 Byte Platz aus einer neuen Zeile zu sparen.
Edit 2: Wie von user7150406 bemerkt, war die Ausgabe falsch (es werden keine Leerzeichen gedruckt). Dies wurde mit einem Verlust von 8 Bytes behoben.
Edit 3: Die Logik wurde komplett geändert. Es macht keinen Sinn, zu überprüfen, ob die Zahl ungerade ist. Legen Sie stattdessen alle Zahlen auf den Stapel und entfernen Sie jede zweite. Byte gespeichert 13!
quelle
Java,
118112 BytesBearbeiten: 6 Bytes dank @peech gespeichert
Golf gespielt:
Ungolfed:
Testen:
quelle
i
in Ihrer ersten for-Schleife initialisieren , es könnte so aussehenfor(; i < n; i++)
. Sie können mit dieser Änderung noch weiter Golf spielen:o += i + " ";
Änderungen ano += i++ + " ";
und für Schleife werdenfor(; i < n; )
. Das ist, wenn Sie die if-Anweisung behalten möchten. Sie könnten Ihr Inkrement von i zu änderni += 2
und die gesamte if-Anweisung löschen, aber in diesem Fall trifft mein zweiter Satz nicht zu :) (ps: Ich habe dies nicht getestet :))i
Initialisierung aus derfor
Schleife entfernt, aber die anderen Dinge haben sie in einer Schleife festgehalten. Ich muss vielleicht ein bisschen mehr damit herumspielen :)o += i++ + " ";
:). Btw, Sie einen kleinen Fehler in Ihrem Code haben :) da Java verwendetfloor()
auf Integer - Division (4/3 = 1), dann sollten Sie es tun , wie folgt:int i = 1; n += 1; for (; i < n; i += 2) { ... jada jada ... }
. Wenn Sie i umi += 2
erhöhen, brauchen Sie die if-Anweisung nicht, um auf Parität zu prüfen. Es werden weitere 3 Bytes gespeichertfloor
habe vor ein paar Tagen festgestellt, dass die Division eigenartig ist, als ich mit Java gespielt habe :)C # 6, 95 Bytes
Volles Lambda:
quelle
CJam,
2623 BytesProbier es aus!
-3 danke an 8478 (Martin Ender)
quelle
Sri,:)2%_S2**N@,"/ \\"*
+
. Und ich schwöre, ich habe es wirklich benutzted
! ... kürzer als Pyth.Game Maker Language (GM 8.0), 97 Byte
Vorausgesetzt, dass die Eingabe höchstens 10 ist,
chr(48+i)
funktioniert anstelle vonstring(i)
, obwohl die Anzahl der Bytes gleich ist.Lesbar:
quelle
Pyth,
2422 BytesDanke an 42545 (ETHproductions) für -1 Byte
Online-Dolmetscher
11 Testfälle
quelle
*lK"/ \\
\
anstelle von\\
:) verwenden> <> (Fisch)
526362 BytesProbieren Sie es online!
Einfach platzieren
n
auf den Stapel und los geht's!Ein Großteil davon stammt aus der Antwort von @ Teal-Pelican :).
Bearbeiten: Die Ausgabe ist in beiden Übermittlungen nicht richtig ausgerichtet! Festsetzung...
Edit2: Ich musste einige Bytes opfern, aber die Ausgabe ist jetzt tatsächlich korrekt.
Edit3: Kein Spaß mehr mit
\
/
Spiegeln und ich spare 1 Byte.Ausgabe:
quelle
C
1007977 Bytesquelle
R
70696858 Bytesquelle
Bash,
64,59,57,51,49,4845 BytesBEARBEITEN:
-s ""
durch-s\
Golf gespielt
Chunk (45 Byte):
Funktion (Originalversion) (57 Bytes):
Prüfung
quelle
sed
ist genial. Wenn Sie weder eine Funktion noch printf verwenden, sparen Sie 10 Bytes:seq -f" %g " -s "" 1 2 $1|sed 'p;s| . |/ \\|g'
cat
lese immer noch die Eingabe von STDIN, da es IMO nicht wirklich fair ist, eine vordefinierte Variable zu verwenden, um die Daten weiterzuleiten.$1
ist nur der erste Parameter, der an das Programm übertragen wird. Ich glaube nicht, dass es betrügt, siehe meta.codegolf.stackexchange.com/questions/2447/…Befunge 93 , 64 Bytes
Probieren Sie es online!
quelle
Ruby
8260 BytesSchnelle und schmutzige Ruby-Lösung könnte definitiv besser optimiert werden, wenn ich mit Ruby besser wäre
Verwendung: prog.rb 10
Ausgabe:
edit: zahlreiche bearbeitungen und optimierungen von @Manatwork!
quelle
print
→$><<
und String-Interpolation verwenden" #{x} "
. Aber das Beste wäre , die Anzahl der zu reduzieren ,.each
indem Sie die erste Zeile direkt von dem Rückruf ausgeben und die zweite Zeile in einem variablen Aufbau:s="";(1..$*[0].to_i).step(2){|x|$><<" #{x} ";s+="/ \\"};puts"",s
. Oder sogarputs"",(1..$*[0].to_i).step(2).map{|x|$><<" #{x} ";"/ \\"}*""
.Numeric#step
Akzeptiert 2 Parameter, um die lange Bereichssyntax zu vermeiden, die Klammern um Folgendes erfordert:(1..$*[0].to_i).step(2)
→1.step($*[0].to_i,2)
.JavaScript (ES6),
6664 BytesErstellt rekursiv die erste Zeile und hängt dann die zweite an. Die erste Zeile wird mit der Beobachtung erstellt, dass es sich einfach um den Bereich [0 ... n] handelt, bei dem jedes Element n in ein Leerzeichen umgewandelt wird, wenn es gerade ist, oder n mit einem Leerzeichen verkettet wird, wenn es ungerade ist.
quelle
Python 2, 60 Bytes
6 Bytes gespart dank @Kade!
quelle
list()
Besetzung zu verwenden, wenn du sie entfernst, erhältst du 60 :)lambda s:" "+" ".join(range(s+1)[1::2])+"\n"+-~s/2*"/ \\"e
weil es dann eine Liste von Ints gibt und es stirbtBatch, 107 Bytes
quelle
Scala,
9995 BytesUngolfed
quelle
Ruby, 48 Bytes
quelle
Oktave, 45 Bytes
f=@(n)reshape(sprintf(' /%d \',1:2:n),2,[]);
Test:
f (8)
quelle
QBIC , 35 Bytes
Erläuterung:
quelle
Kitanai , 140 Bytes
quelle
Perl, 46 + 2 (
-pl
Flag) = 48 BytesVerwenden von:
Oder 52 Bytes:
Verwenden von:
quelle