Aus diesem Grund müssen Sie besser herausfinden, ob eine Phrase ein Akronym für ein Wort ist. Sie denken auch, dass es sich lohnen würde, zu prüfen, ob die betreffende Phrase und das betreffende Wort rekursive Akronyme sind.
Deine Aufgabe:
Geben Sie ein Wort und dann eine durch eine Linie getrennte Phrase aus, wenn die Phrase ein Akronym und dann ein rekursives Akronym ist . (Die Phrase enthält, wofür sie steht.)
- Die Eingabe besteht aus alphabetischen Zeichen sowie Leerzeichen.
- Ihr Programm sollte nicht zwischen Groß- und Kleinschreibung unterscheiden.
Beispiel Input / Output:
Fall 1:
Eingang:
Acronyms
Acronyms can really obviously narrow your message sensors
Ausgabe:
True
True
Fall 2:
Eingang:
FAQ
frequently asked questions
Ausgabe:
True
False
Fall 3:
Eingang:
foo
bar baz
Ausgabe:
False
False
Fall 4:
Eingang:
GNU
GNU is not Unix
Ausgabe:
False
False
Fall 5:
Eingang:
Aha
A huge Aha
Ausgabe:
True
True
Antworten:
Pyth,
1918Dies gibt das Ergebnis in ein ziemlich seltsam Format, wie:
TrueFalse
.Sie können es online ausprobieren oder die Test Suite ausführen .
Erläuterung:
quelle
Python 3, 89
Dank SOPython wurden viele Bytes gespeichert.
Der komplizierteste Teil dieser Lösung ist
h=tuple(a)==next(zip(*d))
.Dies entpackt die Liste
d
in zip und ruft dannnext
auf, ein Tupel des ersten Elements jeder übergebenen Iterationsdatei zurückzugeben,zip
das dann mit einem Tupel jedes Buchstabens in a (tuple(a)
) verglichen wird .quelle
[0]==l
für.startswith(l)
.CJam,
2120 BytesProbieren Sie diese Geige im CJam-Interpreter aus oder überprüfen Sie alle Testfälle auf einmal.
Wie es funktioniert
quelle
Haskell,
81-80BytesDas Ausgabeformat ist nicht streng definiert, daher gebe ich zwei Boolesche Werte zurück, z . B.
p "Aha\na huge arm"
->(True,False)
.quelle
<-
) erfahren - danke!Scala,
135110108 BytesSparte ein paar Bytes mit Kommandozeilenargumenten (danke an J Atkin für den Hinweis), wobei die Booleschen Werte als Tupel ausgegeben wurden,
mkString
anstatt mitnew String
and print instead of println.EDIT: Misinterpreted the question, and had to reimplement the solution
quelle
Python 3, 106 bytes
Well, at least it beat Scala ;)
quelle
AppleScript,
302301297293 BytesAw, hell yeah. Not even bothered that I lose, this is competitive for AppleScript.
Outputs as:
Or whatever the answer happens to be.
quelle
PHP, 120 bytes
Not being case sensitive is a lot of weight (26 bytes). Passed all test cases:
Outputs two bool values in this form:
Reads two arguments from the command line, like:
Ungolfed
quelle
Ruby,
7774 bytesquelle
Ruby, 52 bytes
Example:
quelle
Matlab, 90 bytes
Example (note that Matlab displays
true
/false
as1
/0
):quelle
JavaScript ES6,
9592 bytesInput both strings as parameters. Outputs an array with two values: one for each boolean.
quelle
.indexOf
. Nice work! Perhapsr=eval(`/^${a}$/i`)
would work in place of your currentr
setup.eval
as aRegExp
object shortener. Thanks for the tip!GNU sed, 118 bytes
Requires
-r
flag, included in score as +1. Note that I'm using\b
for a word-boundary match, even though I can't find this documented in GNU sed. It Works For Me...Expanded:
quelle
Groovy, 91 bytes
Output format is
[bool, bool]
.This takes it's input from the command line args.quelle
Lua 5.3, 182 bytes
quelle
R, 93 bytes
Usage:
quelle
awk
137 bytesT="True";F="False"
to simplify output.NR*NF<2{a=tolower($1)}
: seta
only if the first line only has one field.END{...}
: assuming only two lines...for(i=1;i<=NF;i++)b=b substr(tolower($i),1,1)
: construct recursive acronym.print(a==b?T:F)"\n"(a==tolower($1)?T:F)
: print the output of both comparisons,a==b
anda==tolower($1)
.If anyone knows how to optimize the recursive acronym construction, feel free to suggest.
quelle
SpecBAS - 144 Bytes
Das Konvertieren der 2 x-Eingaben in Großbuchstaben spart Zeichen gegenüber der Kleinbuchstabenkonvertierung. Es können jetzt mehrere Zuweisungen in einer
LET
Anweisung ausgeführt werden, was ebenfalls hilfreich ist. UndTEXT
speichert ein Zeichen vorbeiPRINT
.Verwendet 1/0, um true / false anzuzeigen (das Apostroph verschiebt die Ausgabe nur in die nächste Zeile).
quelle
Perl5, 90 Bytes
ein bisschen schummeln: 0 = alles falsch, 1 = eins wahr, 2 = beides wahr. Ich bin kein Golfer, aber verärgert, dass Perl beim Surfen fehlt!
quelle
JavaScript (ES6) 93
Testen Sie das folgende Snippet in einem beliebigen EcmaScript 6-kompatiblen Browser
quelle
JavaScript (ES6),
899695 BytesShucks ... Ich dachte, ich hätte alles geklärt, aber anscheinend habe ich mich geirrt.
Dies definiert eine anonyme Funktion, die Eingaben als zwei Zeichenfolgen akzeptiert und ein Array von zwei booleschen Elementen zurückgibt. Das erste Element wird berechnet, indem die erste Zeichenfolge in Kleinbuchstaben mit dem ersten Zeichen jedes Wortes in der zweiten Zeichenfolge verglichen wird. Das zweite Element wird einfach berechnet, indem überprüft wird, ob der zweite String den ersten enthält.
Hier ist eine andere Lösung für den zweiten Punkt; 2 Bytes kürzer, aber nur sehr wenige Browser unterstützen dies:
quelle
GNU: Gnus nettle unicorns
ReferenceError: l is not defined
(fehltl=
vorhertoLowerCase
)'GNU','GNU is not unix'
(Testfall 4) falsch sein sollte, falsel=
beim Suchen nach einem Bug gelöscht und vergessen, es wieder einzulegen . Danke, dass du das angesprochen hast! Der andere Testfall sollte ebenfalls behoben werden.Pyke (bei Veröffentlichung ohne Titel), (nicht wettbewerbsfähig), 20 Byte
Den Quellcode finden Sie hier . Die Sprache ist vollständig instabil (erste Testanforderung). Erwarten Sie also nicht, dass sie in Zukunft funktioniert (Commit 8).
Oder 18 Bytes (stabil)
Probieren Sie es hier aus!
quelle