+ - + + - + | | + - + + - + | | | | | | | | + - + + - + + - + + - +
Die Leute von ASCIIville bauen ihre Stadt wieder auf und skizzieren neue Pläne. Ihre Aufgabe ist es, ihre neue Stadt basierend auf der Anzahl der gewünschten Gebäude zu zeichnen.
Die Eingabe wird sein, wie viele Gebäude es gibt. Jedes Gebäude ist halb so hoch wie die Eingabe (aufgerundet, wenn ungerade), ohne Ober- und Unterseite des Gebäudes.
Zeichnen wir ein grundlegendes Beispiel für 4
+ - + + - + + - + + - + | | | | | | | | | | | | | | | | + - + + - + + - + + - +
Wie Sie hier sehen können, gibt es |
in jedem Gebäude zwei s, da der Eingang vier war. Aber da ist ein Fang! (Dies bedeutet, dass das obige Beispiel falsch ist und das Beispiel oben in diesem Beitrag die tatsächliche Ausgabe für 4 darstellt.)
Für jedes Gebäude, das keine Primzahl ist, verringert sich seine Höhe um eins. Wenn die Zahl durch 3 , 5 oder 10 teilbar ist , wird sie um eins verringert. Wenn es durch zwei oder mehr dieser Zahlen teilbar ist, addiert sich der abgezogene Betrag ( 10 ist durch 10 und 5 teilbar, und es ist keine Primzahl, also wird er durch 3 abgezogen ).
Schauen wir uns ein Beispiel mit einer Eingabe von an 5
.
+ - + + - + | | + - + + - + + - + | | | | | | | | | | | | | | | | | | | | + - + + - + + - + - + + - +
Hier ist ein Beispiel für 7
+ - + + - + + - + | | + - + + - + + - + | | | | | | | | | | | | + - + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + - + + - + + - + - + + - + + - + + - +
Und ein Beispiel von 10
+ - + + - + + - + | | + - + + - + + - + | | + - + | | | | | | | | | | + - + | | | | + - + | | | | | | | | | | | | | | | | | | + - + | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + - + + - + - + + - + - + - + - + - + - + - + - + - + - + - +
Und zurück zu 6
+ - + + - + | | + - + + - + + - + | | | | | | | | | | + - + | | | | | | | | | | | | + - + + - + - + + - + - + - + + - +
Regeln:
- Wenn eine Zahl so stark abgezogen wird, dass ihre Höhe kleiner oder gleich Null ist, wird sie nicht angezeigt, es bleibt jedoch ein Leerzeichen übrig (ich glaube nicht, dass dies möglich ist,
6
ist das, was ich am ehesten gefunden habe, um Null zu erreichen) . - Nachgestellte Leerzeichen sind erlaubt.
- Die Breite jedes Gebäudes muss 2 betragen.
- Ihre Eingabe kann von stdin oder in das Programm codiert sein.
- Ihr Programm muss ein vollständiges Programm sein , keine Funktionen.
- Ihr Programm muss 4-15 Builds können. 0-3 und negative Zahlen werden nicht benötigt und sind nicht dazu bestimmt, irgendetwas zu tun, was bedeutet, dass sie einen Fehler auslösen, Müll drucken oder nichts tun können.
Antworten:
CJam,
68 66 5855 BytesDas ist vorerst zu lang. Aber ein Anfang.
UPDATE: Jetzt für Eingaben bis 15 hardcodieren, anstatt den Offset zu berechnen. Vorschlag von Sp3000
Probieren Sie es hier online aus
quelle
Python 2,
247 245 237229 Bytesquelle
C #,
223205 BytesDies nutzt die Notwendigkeit, nur 15 Gebäude zu betreten.
260 Bytes
Und eine allgemeinere Antwort, die für eine beliebige Anzahl von Gebäuden funktioniert.
quelle
Python 2, 163 Bytes
Die primality Prüfteil leiht @ xnor Algorithmus von hier .
Wenn wir die ersten 15 Offsets fest codieren, können wir 137 Bytes erhalten :
Ich gehe davon aus, dass nachfolgende Leerzeichen am Ende jeder Zeile in Ordnung sind, aber wenn die Frage nachfolgende Leerzeichen nach der gesamten Ausgabe bedeutete, dann sind es +9 Bytes für
.rstrip()
.quelle
Groovy,
234,225,223,219 BytesMissbrauch der 15 Gebäudegrenze
quelle
Swift,
375, 350 BytesHier ist der eingerückte Code
B
enthält die Anzahl der Gebäude.p
Gibt 1 zurück, wenn eine Zahl keine Primzahl ist.Ich muss Foundation importieren, um die
ceil
Funktion nutzen zu können.Es ist mir nicht gelungen, den Code nur für die fünfzehn Fälle zu optimieren, aber ich werde es später schaffen.
edit: @Kametrixom Ratschläge einholen und das
mod
Teil optimieren (ich habe vergessen, die Länge des Variablennamens zu reduzieren).quelle
Foundation
mit einDarwin
paar Bytes speichernimport UIKit
stattimport Darwin
.