Wörter und Schaltflächen ändern die Schriftgröße nach folgenden Regeln:A▲ᴀ▼
- Die Anfangsschriftgröße ist 11.
- Wenn gedrückt wird, wenn die Schriftgröße 1 ist, bleibt die Größe 1.ᴀ▼
- Die Schriftgröße ändert sich mit 1 Punkt im Bereich von 1 bis 12.
- Die Schriftgröße ändert sich mit 2 Punkten im Bereich von 12 - 28.
- Zur Auswahl stehen 28, 36, 48, 72 und 80 im Bereich von 28 bis 80.
- Die Schriftgröße ändert sich mit 10 Punkten im Bereich von 80 - 1630.
- Die Schriftgröße ändert sich mit 8 Punkten im Bereich 1630 - 1638.
- Wenn bei einer Schriftgröße von 1638 gedrückt wird, bleibt die Schriftgröße bei 1638.A▲
Aufgabe
Bestimmen Sie die resultierende Schriftgröße in so wenigen Bytes wie möglich, wenn Sie eine Reihe von Tastendrücken in einem angemessenen Format ausführen.
Beispiele
[3,-1,2]
, was bedeutet : Das Ergebnis ist 18.A▲A▲A▲ᴀ▼A▲A▲
Einige mögliche Formate sind '^^^v^^'
, [1 1 1 -1 1 1]
, [True,True,True,False,True,True]
, ["+","+","+","-","+","+"]
, "‘‘‘’‘‘"
, "⛄️⛄️⛄️🌴⛄️⛄️"
, 111011
, "CaB"
, etc ...
[2]
: 14
[-1]
: 10
[13]
: 80
[-11,1]
: 2
[11,-1]
: 36
[170,-1]
: 1630
[2000,-2,100]
: 1638
"^vvv^v^^^v"
,[-1, 1, 1, -1, 1, -1]
,[0, 1, 0, 1, 1, 0, 1]
?Antworten:
MATL ,
494745 BytesDas Eingabeformat ist
[1 1 -1 1 1 -1 -1 -1]
oder[2 -1 2 -3]
, mit optionalen Kommas.Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
quelle
Word VBA,
1991471261161021008785 BytesWarum emulieren, wenn Sie es können ?!
Deklarierte Funktion im
ThisDocument
Modul, die Eingabenn
in Form vonArray(true,true,false,true)
und Ausgaben an den Word-Schriftgrößenselektor annimmt :PGolf gespielt:
Ungolfed:
.GIF der Nutzung
Vielen Dank
-21 danke an @ Adám (entfernter
Selection.WholeStory:
Anruf)-10 danke an @ Adám (gehe von einer sauberen Umgebung aus; entferne
f.size=11:
Anruf)-14 dank @ Adám (freche Auswahl der Schriftgröße für die Ausgabe von Wörtern)
-2 danke an @ Adám (bool ParamArray)
-13 für den Wechsel
ParamArray n()
aufn
und erwartete Eingabe als Boolean Array-2 für den Wechsel von einem Codemodul zu dem
ThisDocument
ModulAlte Version 114 Bytes
n
Übernimmt Eingaben als ParamArray in Form vontrue,true,false,true
und gibt das Wort Vbe-Direktfenster ausÄltere Version, 199 Bytes
Nimmt Eingaben in Form von
170,-4,6,-1
(akzeptiert Zahlen, die größer als 1 sind)quelle
Set f=.Size = 12
?JavaScript (ES6),
103 bis101 ByteNimmt Eingaben als Array von
-1
/1
.Prüfung
Code-Snippet anzeigen
2 Bytes gespart dank ETHproductions
quelle
a&&(b=c)
, können Sie mit ein Byte speicherna?b=c:0
. Hier kann man mitn+=n>v&&k*[...][i]
Python 2,
111107 BytesErfordert Eingaben im
[-1, 1, 1, -1, ...]
Format. Es funktioniert mit den Beispielen für einige zusätzliche Bytes:quelle
i+=[0,d][0<i<179]
könnte funktionierenif
Statement.0
oder179
für immer dort festsitzen.Oktave,
938987 BytesDas Eingabearray kann ganze Zahlen größer als 1 oder kleiner als -1 haben, um eine Vielzahl von Aktionen darzustellen
Dank Adám wurde die Sprache in Octave geändert, um nur die direkte Indizierung in ein Array verwenden zu können.
2 Bytes gespart dank rahnema1.
Prüfung
Auf Ideone
quelle
[1:12,14:2:28,36,48,72,80:10:1630,1638](L)
.[1:11 [6:14 18 24 36 40:5:815 819]*2]
Einige Bytes können gespeichert werden!Rubin, 106 Bytes
Ich habe es geschafft, ein paar Bytes von der Python-Lösung zu rasieren (und es hat eine Weile gedauert, bis ich mich rasiert habe).
Es ist eine anonyme Funktion, die die Eingabe in Form von
[1, -1, 1, 1, ...]
. Es scheint ziemlich gut mit Eingaben in der Form umzugehen[170,-12]
, aber ich kann nicht garantieren, dass es 100% der Zeit funktionieren wird, also gehe ich auf Nummer sicher und sage, dass es funktioniert[1, -1, 1, 1, ...]
.Tricks, die ich verwendet habe:
[0,179,a+b].sort[1]
: Diese Angabea+b
muss zwischen 0 und 179 liegen. Dies sind die gültigen Indizes des Schriftgrößen-Arrays.Wenn Sie den splat-Operator für Bereiche verwenden, werden diese in Arrays konvertiert, sodass die verfügbaren Schriftgrößen aus generiert werden
[*1..12,*(14..28).step(2),36,48,72,*(80..1630).step(10),1638]
. Welches ist ein flaches Array, das die Werte von jedem der abgeflachten Elemente enthält:1..12
ist ein Bereich von 1 bis 12 (einschließlich). Der splat-Operator wandelt es in Werte um1, 2, 3, ..., 11, 12
.(14..28).step(2)
ist ein Enumerator für den angegebenen Bereich, in dem jeder Schritt um 2 erhöht wird. Der splat-Operator wandelt ihn in die Werte um14, 16, 18, ..., 26, 28
.36, 48, 72, 1638
) sind alle in ihrer Position in dem großen Schriftgrößenarray verkettet.Ich habe die
inject
(/reduce
) -Methode verwendet, die jedes Element des Eingabearrays verwendet, während sie in eine 'Memo'-Variable reduziert wurde (wie Ruby es ausdrückt). Ich initialisiere dies auf 11, und der Hauptteil jeder Injektionsiteration setzt diese Memovariable auf das Ergebnis des Addierens des aktuellen Elements der Eingabe zum aktuellen Memowert und klemmt es dann zwischen 0 und 180.Alle begrüßen den Splat-Operator!
quelle
PHP, 116 Bytes
erzeugt zuerst den Größenindex (von 1 bis einschließlich 180),
ordnet diesen dann der Punktgröße zu und druckt das Ergebnis aus.
nimmt
+N
und-1
von Befehlszeilenargumenten.(
-N
wird auch akzeptiert; achte nur darauf, dass die Größe nicht unter Null springt!)Laufen Sie mit
-nr
.quelle
Perl 5 , 123 Bytes
122 Byte Code + 1 für
-a
Probieren Sie es online!
Eingabeformat:
quelle