Meine Familie hat ein E-Commerce-Geschäft. Auf unserer eigenen Website zwingen wir die Benutzer, ihren Status aus einem Dropdown-Menü auszuwählen, wenn sie ihre Adresse eingeben. Über einige andere von uns verwendete Kanäle können Kunden jedoch alles, was sie möchten, in das Feld eingeben.
Meine Mutter liebt die Rechnungsvorlagen, die ich für sie erstellt habe und die automatisch generiert werden. Aber weil sie so hübsch und ausgeglichen sind, kann sie es nicht ertragen, wenn Leute die Namen ihrer Bundesstaaten aufschreiben oder schlimmer noch so etwas wie "New Jersey" schreiben. Sie sagt, es ruiniert den Look.
Mein Vater mag es, wenn Code leicht ist. Anstatt einen Switch-Case-Block zu verwenden, möchte er eine schlankere Lösung.
Die Herausforderung besteht also darin, eine kurze Funktion zu erstellen, die die möglichen Eingaben übernimmt und eine Abkürzung mit zwei Buchstaben zurückgibt (groß geschrieben, für Mama). Wir gehen davon aus, dass unsere Benutzer buchstabieren und immer ein Leerzeichen in den Namen setzen können (wo erforderlich) oder die richtige Abkürzung übergeben können. Der Anwendungsbereich umfasst die 50 US-Bundesstaaten.
- New York
- New York
- NY
- ny
sind alle akzeptablen Eingaben für New York und sollten NY ausgeben.
Wenn so etwas wie New Yrok übergeben wird, kann die Funktion den ursprünglichen Wert zurückgeben.
Sie können jede gängige Sprache verwenden. Dies ist ein Beliebtheitswettbewerb, also gewinnt derjenige mit den meisten Stimmen am Ende einer Woche. Ich gehe davon aus, dass dies Neuheit und Nützlichkeit begünstigen wird.
EDIT: Die Beschreibung ist Story Fluff, aber ich habe an einem ähnlichen Projekt gearbeitet und dachte, dass es einen interessanteren Weg geben muss, dies zu tun. Ich kann das Projekt selbst machen (bereits gemacht), aber ich dachte, dies sei ein guter Ort für eine interessantere Herausforderung. Mit "Jede gemeinsame Sprache" habe ich benutzerdefinierte Sprachen / Bibliotheken ausgeschlossen, die für diese Herausforderung entwickelt wurden. Ich habe versucht, nach neuartigen Methoden zu suchen, anstatt nach kostenloser Code-Hilfe. Ich denke, jeder hat das irgendwann getan, aber es würde Spaß machen, es auf ungewöhnliche Weise zu tun. Ich finde, dass die interessantesten Projekte diejenigen sind, bei denen Sie alltägliche Aufgaben auf neue und interessante Weise angehen - deshalb ist dies eher ein Beliebtheitswettbewerb als Golf.
quelle
you can use any code
... also wird OP seine Website neu schreiben, um Ihre APL / CJAM / GolfScript-Lösung zu verwenden? Es ist eine Herausforderung, die auf einer wahren Begebenheit basiert. IchAntworten:
Rubin
Ich dachte, es wäre interessant, die Zustandsabkürzungen zu extrahieren, ohne einen der Namen oder Abkürzungen explizit zu schreiben. Dieser berücksichtigt keine Rechtschreibfehler der Eingabe, da uns so etwas hier auf codegolf.SE egal ist, rihgt ?
Es dauerte eine beträchtliche Zeit, um clevere Muster zu finden, die allen Zuständen entsprachen. Die Reihenfolge der Muster ist wichtig - jedes aufeinanderfolgende Muster gilt für die verbleibenden Zustände, die nicht mit einem vorherigen Muster übereinstimmen:
Alle Zustände mit zwei Wörtern verwenden die Anfangsbuchstaben der beiden Wörter: Alle Staaten, die mit einem Buchstaben in {CDGHKLPV
} beginnen, verwenden den ersten und den letzten Buchstaben im Namen: Von den übrigen Zuständen sind die Buchstaben {ZVX
} eindeutig: Alle verbleibenden Zustände, die mit {FNOUW
} beginnen, verwenden die beiden ersten Buchstaben. Dann sind {DNR
} als zweite Buchstaben eindeutig:Es wird wirklich schwierig, allgemeine Muster zu erstellen, aber ...
Nur drei verbleibende Zustände verwenden doppeltesN
oderL
, und der doppelte Buchstabe wird in der Zustandsabkürzung verwendet:A
oderO
nach doppeltem S ist einzigartig für Immer wenn {SNW
} in den verbleibenden Statusnamen vor anderen Buchstaben erscheint , werden die Buchstaben danach in den Abkürzungen verwendet: Zwei übrig. Diese verwenden die beiden Anfangsbuchstaben:Es kann natürlich Golf gespielt werden:
Ruby 2 -
191165154 ZeichenWeitere 26 Zeichen werden entfernt, indem die regulären Ausdrücke ein wenig hässlich gemacht werden. Auch eine der ursprünglichen regulären Ausdrücke erwies sich als redundant!
quelle
If something like New Yrok is passed in, the function should return the original value.
C #
Ich habe Zeichen bereits in den Zuständen für die Abkürzungen verwendet, um die Zustandszeichenfolge zu verkürzen.
quelle
JavaScript (E6)
Hier ist der Großteil die Liste der Namen, wobei der camelCase- Trick verwendet wird, um ein wenig zu verkürzen. Golf, 617 Bytes.
quelle
Python
Beschlossen, dies nur als Code-Golf-Herausforderung zu tun. Habe es mit Hilfe von daniero und hsl auf
906713694 Zeichen gebracht:Wenn jedoch Module zulässig sind (wie das us-Modul ), kann ich es auf 130 Zeichen reduzieren:
Und wenn Sie den ursprünglichen Wert nicht zurückgeben müssten, wenn der Status nicht existiert, könnte ich ihn auf 50 Zeichen reduzieren:
quelle
s
eine große Zeichenfolge verwenden und diese dann durch Kommas (,
) teilen . Keine Notwendigkeit für alle einfachen Anführungszeichen.Bash + Sed, 291 Bytes
Schamlose Umstellung von Danieros Ruby-Lösung auf sed:
quelle
Golfscript -
750653Der Großteil besteht aus den Statusnamen und Abkürzungen.
Erläuterung:
quelle
PHP
Mein Versuch, der nicht so erfolgreich war, wie ich gehofft hatte, verwendet die Zeichenfolgenlänge und eine bestimmte Zeichenplatzierung, um die Abkürzung aus dem Statusnamen zu extrahieren. Wahrscheinlich ist eine bessere Sequenzierung der Namenseliminierung möglich.
Natürlich kann es Golf gespielt werden. Dies ist mein erster Golfversuch, daher sind Einsichten willkommen. (911)
quelle
Javascript
Ich weiß, dass dies kein Code-Golf ist, aber ich möchte es trotzdem spielen. :) :)
Yay für neue Dinge! (Stapelschnipsel)
quelle
eval(open('a.txt'))
auch gültig? Wenn Sie eine Datei jeglicher Art verwenden, müssen Sie diese Datei und ihren Dateinamen auch in Ihre Zeichenanzahl aufnehmen. (Dies ist kein Code-Golf, daher spielt es in diesem Fall sowieso keine Rolle.)