Aufgabe
Ein Theater hat 10 Zeilen, etikettieren , A
um J
von vorne nach hinten, und 15 Sitze in jeder Zeile der Nummern 1 bis 15 von links nach rechts.
Das Programm verwendet die folgenden Regeln, um die besten Plätze auszuwählen.
- Regel 1: Alle Sitzplätze in einer Buchung müssen in derselben Reihe nebeneinander liegen.
- Regel 2: Die Sitze müssen so weit vorne wie möglich und dann so weit links wie möglich sein (niedrigster Buchstabe, dann niedrigste Zahl)
Schreiben Sie eine Funktion, die die Anzahl der gewünschten Tickets als Ganzzahleingabe ( n
) verwendet und die besten verfügbaren Plätze in einer Längenliste ausgibt n
.
Ihr Programm sollte:
- Ausgang,
-1
wenn 1> Eingang oder Eingang> 15 * - Ausgabe,
-1
wenn die Plätze nicht verfügbar sind * - Haben Sie eine Funktion
B(n)
, mit der der Benutzer die gewünschte Anzahl von Plätzen eingeben kann.
* Sie können -1 in einer Liste ausgeben, wenn dies einfacher ist
Beispiele
I / O
Das Aufrufen B(5)
eines neuen Arrays sollte zurückgeben. Das [A1, A2, A3, A4, A5]
Aufrufen B(2)
danach sollte zurückgeben. Das [A6, A7]
Aufrufen B(10)
danach sollte zurückgeben. Das [B1, B2, ... B9, B10]
Aufrufen B(-1)
sollte immer zurückgeben-1
Ungolfed Solution Python
Theatre = [ [False] * 16 ] * 11
def B(n):
if 0 <= n <= 15:
for i in range(10):
for j in range(15-n+1):
try:
if not Theatre[i][j]:
if not Theatre[i][j + n]:
row = i
start = j
List = []
for q in range(n):
List.append(chr(row + 65) + str(start + q + 1))
Theatre[row][start + q] = True
return List
except:
break
return -1
Antworten:
JavaScript - 172
Funktion selbst ist 172:
Eingang:
Ausgabe:
quelle
Javascript ( ES6 ) -
13012710710198Demo hier: http://jsfiddle.net/tBu5G/
Einige Ideen aus @ edc65
quelle
n=0
Haskell, 129
Es mussten einige Anpassungen vorgenommen werden, damit dies in Haskell funktioniert: Es wird
b
ein Paar zurückgegeben: die Tickets (falls möglich) und der neue Status des Theaters.t
ist der ursprüngliche Theaterzustand, bei dem alle Tickets nicht verkauft sind. Außerdem war die Rückgabe-1
für Haskell unnatürlich. Wenn für eine Anforderung keine Tickets ausgestellt werden können, wird die leere Liste für die Tickets zurückgegeben.quelle
APL (75)
Prüfung:
Erläuterung:
T←10 15⍴0
:T
ist eine 15-mal-10-Matrix, die den Theaterzustand enthält (0 = frei)B←{
...}
: die Funktion(⍵∊⍳15)
: wenn⍵
ist ein Mitglied der Menge von ganzen Zahlen von 1 bis 15,∨/Z←,T⍷⍨⍵/0
: undT
enthält⍵
Nullen in einer Reihe (Speicherung möglicher Startpunkte inZ
),:
: dann:(⊃Z/,⍳⍴T)
: mögliche Startkoordinaten auswählen und die erste nehmen,∘+¨1-⍨⍳1⍵
:⍵-1
Weitere Positionen rechts von der Startkoordinate hinzufügenP←
: Speichern Sie die Koordinaten inP
{⎕A[⍺],⍕⍵}/¨
: Formatieren Sie die KoordinatenT[P]←
: Speichern Sie die formatierten Koordinaten an ihren Stellen inT
. (Alle Werte ungleich Null in T reichen aus)+
: gebe das Ergebnis zurück, welches die formatierten Koordinaten sind (das Ergebnis einer Zuweisung ist standardmäßig stillschweigend)⋄¯1
: Andernfalls kehren Sie zurück¯1
.quelle
Javascript (E6) 99
103 113 121Wirklich, Sie müssen nur eine Nummer für jede Zeile speichern
Prüfung
Ungolfed
quelle
JavaScript (ECMAScript 6 Draft) -
969591 ZeichenEine rekursive Lösung:
Version 1
Version 2:
(Danke an nderscore für die Inspiration zum Speichern von 1 Charakter)
Version 3:
(Danke an nderscore )
Erläuterung:
quelle
B=(n,r=0)=>n>0&r<9?(k=B[r]|0)+n<16?[...Array(n)].map(_=>'ABCDEFGHIJ'[r]+(B[r]=++k)):B(n,r+1):-1
B=(n,r=0)=>n<1|r>9?-1:(k=B[r]|0)+n<16?[...Array(n)].map(_=>'ABCDEFGHIJ'[r]+(B[r]=++k)):B(n,r+1)
sollte funktionieren.B=(n,r=0)=>n<1|r>9?-1:(B[r]^=0)+n<16?[...Array(n)].map(_=>'ABCDEFGHIJ'[r]+ ++B[r]):B(n,r+1)
GolfScript,
10382 BytesBeispiele
Wie es funktioniert
quelle
CoffeeScript -
171150149Ich vermute, Ruby oder Perl werden das bald ausschalten.
Entsprechendes JavaScript / Erklärung :
Für diejenigen, die mit CoffeeScript nicht vertraut sind.
Probieren Sie es online aus .
quelle
All seats in one booking must be in the same row, next to each other.
Cobra - 309
Dies sollte es tun, aber ich kann nicht tatsächlich für ein paar Stunden zu einem Compiler gelangen, so dass ich es später aktualisieren werde, wenn nötig.
quelle
C # - 289
Erster Versuch, Code Golf zu spielen.
Nicht golfen
quelle
K, 140
Hier sind zweifellos zahlreiche Verbesserungen vorzunehmen
quelle
C ++ - 257
Auch ein erster Golfversuch.
Da to_string mit meinem Compiler nicht funktioniert hat, ist toS definiert als
Und als kleines Interface
quelle
vector<int> t(10,0);vector<string> b(int n){vector<string> o;for(int i=0,j;i<10&&16>n&&n>0;i++){if(15-t[i]<n)continue;char l='A'+i;for(j=0;j<n;j++)o.push_back(l+to_string(j+t[i]+1));t[i]+=n;n=0;}if(o.empty())o.push_back("-1");return o;}
268 Bytes
Golf Code:
Ungolfed-Code:
Ich hätte einige Anmerkungen in einen Kommentar zur Lösung von GoldenDragon geschrieben, anstatt meinen eigenen zu machen, aber mein Ruf lässt dies nicht zu.
quelle