Der Weihnachtsmann braucht Hilfe, um festzustellen, wie viele Elfen er benötigt, um jedem Haus Geschenke zukommen zu lassen.
Kohle ist erheblich schwerer als Geschenke, daher braucht der Weihnachtsmann drei Elfen für jede ungezogene Person im Haus. Es werden nur zwei Elfen benötigt, um dem Weihnachtsmann beim Tragen von Geschenken zu helfen.
Auf der Santa-Karte wird ein Haus durch a dargestellt *
, und jedes Haus wird durch a geteilt +
.
Zu beiden Seiten des Hauses befindet sich eine Zahl - die linke für die Anzahl der ungezogenen Personen im Haus und die rechte für die Anzahl der netten Personen im Haus. Wenn auf einer Seite keine Zahl steht, wird sie als 0 interpretiert.
Der Weihnachtsmann besucht nicht diejenigen, die nicht in Weihnachtsstimmung sind (sie verdienen nicht einmal Kohle), daher kann es vorkommen, dass ein Haus auf keiner Seite eine Nummer hat. In diesem Fall braucht der Weihnachtsmann keine Hilfe von Elfen
Zum Beispiel könnte eine von Santas Karten so aussehen
1*3+2*2+1*+*2
Im ersten Haus gibt es 1 freche und 3 nette, der Weihnachtsmann braucht neun Elfen. Im zweiten gibt es 2 freche und 2 nette, der Weihnachtsmann braucht zehn Elfen. Im dritten Haus gibt es 1 frechen und 0 netten, der Weihnachtsmann braucht drei Elfen, und im letzten Haus gibt es 0 frechen und 2 netten, der Weihnachtsmann braucht vier Elfen.
Dies ist jedoch eine stark vereinfachte Version einer der Santa-Karten. Normalerweise bestehen Santas Karten aus mehreren Zeilen und sind quadratisch, um besser auf seine Liste zu passen. Eine normale Karte könnte ungefähr so aussehen (a \n
am Ende jeder Zeile)
1*2+*+*4+1*
2*4+3*+1*6+*
*+*+4*2+1*1
*4+*3+1*+2*3
3*10+2*+*5+*
In dieser Karte braucht der Weihnachtsmann ((1 + 0 + 0 + 1 + 2 + 3 + 1 + 0 + 0 + 0 + 4 + 1 + 0 + 0 + 1 + 2 + 3 + 2 + 0 + 0) * 3) + ((2 + 0 + 4 + 0 + 4 + 0 + 6 + 0 + 0 + 0 + 2 + 1 + 4 + 3 + 0 + 3 + 10 + 0 + 5 + 0) * 2)
= 151 Elfen
Herausforderung
Hilf dem Weihnachtsmann herauszufinden, wie viele Elfen er benötigt, um Waren an jedes Haus zu liefern!
Häuser
- Ein Haus wird durch a dargestellt
*
- Häuser werden durch geteilt
+
- Die Zahl auf der linken Seite des Hauses symbolisiert die Anzahl der ungezogenen Personen (keine Zahl bedeutet 0)
- Die Zahl rechts symbolisiert die Anzahl der netten Leute (keine Zahl bedeutet 0)
- Möglicherweise enthält
\n
die Eingabe Zeilenumbrüche ( ), die ebenfalls als Teilung behandelt werden sollten
Elfen
- Der Weihnachtsmann braucht Hilfe von drei Elfen für ungezogene Menschen (Kohle ist viel schwerer als Geschenke)
- Santa braucht Hilfe von zwei Elfen für nette Leute
- Wenn es auf beiden Seiten keine Nummer gibt, wird der Weihnachtsmann dieses Haus nicht besuchen und braucht daher keine Elfen
Was ist zu tun
Drucken Sie die Anzahl der Elfen aus, die der Weihnachtsmann benötigt, um ihm zu helfen, Geschenke in die Häuser zu bringen. Da der Weihnachtsmann nur wissen muss, wie viele Elfen er mitbringen muss, muss nur die Anzahl der Elfen gedruckt werden, die er für die Liste der Häuser benötigt
Testfälle
1*1 => 5
1*2 => 7
2*1 => 8
1* => 3
*1 => 2
* => 0
1*1+1*1 => 10
1*2+2*1 => 15
1*+*1 => 5
1*1+*+1*1 => 10
*+*+*+* => 0
Regeln
- Die Eingabe kann entweder als Argument in einer Funktion oder von STDIN oder einer entsprechenden Quelle übernommen werden
- Die Ausgabe kann entweder der Rückgabewert einer Funktion sein oder auf STDOUT oder ein gleichwertiges Format gedruckt werden
- Die Eingabe enthält nur Zahlen,
+
,*
, und Zeilenumbrüche\n
- Die Ausgabe sollte nur die Gesamtzahl der Elfen sein, von denen der Weihnachtsmann Hilfe benötigt, um an Weihnachten zu liefern
- Es gelten Standardlücken
Wertung
Der Schlitten des Weihnachtsmanns ist voller Geschenke, die ihm weniger Platz zum Ausführen von Code geben. Deshalb benötigt er den kürzesten Code, den er bekommen kann ). Aufgrund der RICHTIGEN Überlegung des Weihnachtsmanns gewinnt die kürzeste Übermittlung in Bytes!
Bestenliste
Dies ist ein Stack-Snippet, das sowohl eine Rangliste als auch eine Übersicht der Gewinner nach Sprache generiert.
Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift unter Verwendung der folgenden Markdown-Vorlage
## Language Name, N bytes
Wobei N die Größe Ihrer Übermittlung in Byte ist
Wenn Sie mehrere Zahlen in Ihre Kopfzeile aufnehmen möchten (z. B. alte Punkte durchstreichen oder Flags in die Byteanzahl aufnehmen möchten), stellen Sie sicher, dass die tatsächliche Punktzahl die letzte Zahl in Ihrer Kopfzeile ist
## Language Name, <s>K</s> X + 2 = N bytes
max(naughty) + max(nice)
Elfen für die gesamte Strecke brauchen ? Ich dachte, er hat ein paar Elfen, die mit ihm fliegen, aber vielleicht hast du Insider-Informationen dazu und ich muss dieses Jahr genauer hinschauen. :)hello-world.c
. Arbeiterelfen werden eifrig Zielen zugewiesen, wie Jojodmo sagte (ich bin sicher, dass ich Jojodmo kenne, er muss unser Systemadministrator sein) und dann einen Rückruf verwenden, um zu benachrichtigen, wann es Zeit ist, wieder in den Schlittenpool eingesetzt zu werden oder wenn ein Kind sie gesehen hat.Antworten:
Pyth, 21 Bytes
Mehrzeiliges Beispiel
Einzeilige Testsuite
quelle
JavaScript (ES6), 52 Byte
Erläuterung
Konvertiert die Eingabe in eine gültige JavaScript-Anweisung. Ersetzt alle
*
mit.0*3+
und alle anderen (nicht stelligen) Symbole mit.0*2+
. Zum Beispiel8*9+*10
wird8.0*3+9.0*2+.0*3+10
. Schließlich wird es.0*2
an das Ende der letzten schönen Zählung angehängt . Das funktioniert, weiln.0
=n
und.0
=0
.Prüfung
Code-Snippet anzeigen
quelle
.0
Idee.Flex + C,
11290 BytesDas erste Zeichen ist ein Leerzeichen. Kompilieren mit:
Liest aus STDIN, schreibt nach STDOUT. Die Eingabe wird durch EOF (Strg + D in der Konsole) beendet.
quelle
Mathematica, 70 Bytes
Dient
StringExtract
zum Extrahieren der einzelnen Zahlen.quelle
CJam, 23 Bytes
Teste es hier.
Erläuterung
quelle
Im Ernst,
3830 BytesHex Dump:
Diese neue Version unterbricht den Online-Interpreter, funktioniert aber lokal einwandfrei. Hier ist ein Beispiellauf:
Erläuterung:
Alte Version:
Hex Dump:
Probieren Sie es online
Erläuterung:
Dies könnte kürzer sein, wenn ich nur jede Zeile einzeln konvertiert und am Ende alle aufsummiert hätte. Ich werde es später untersuchen.
quelle
PowerShell, 52 Byte
Mit Variation von user81655 ‚s
.0
TrickUngolfed-Version
Anwendungsbeispiel
quelle
Swift 2,
283211 BytesDies kann auf SwiftStub hier getestet werden
Ungolfed
quelle
Python 3,
141114112 BytesNimmt mehrzeilige Eingänge wie diesen auf
c("1*2+*+*4+1*\n2*4+3*+1*6+*\n*+*+4*2+1*1\n*4+*3+1*+2*3\n3*10+2*+*5+*")
Ungolfed:
quelle
Ich bin super spät dran, aber ich wollte es trotzdem versuchen.
Ruby ,
8455 BytesNach so vielen Jahren fand ich diese Frage wieder und überlegte mir eine neue Antwort, bevor mir klar wurde, dass ich sie bereits beantwortet hatte. Hoppla! Wie auch immer, hier ist eine drastisch verbesserte Antwort.
Probieren Sie es online!
Alte 84-Byte-Antwort von der ersten Antwort vor 2 Jahren:
Probieren Sie es online!
quelle
Python 3 , 96 Bytes
Probieren Sie es online!
101 Bytes ohne Regex
Probieren Sie es online!
quelle