Es gibt zwei Formen von Substantiven: Singular und Plural. Die Konvertierung zwischen diesen beiden ist recht einfach.
Normalerweise endet es mit
s
. Ex.car
=>cars
.Wenn es mit endet
s
,x
,z
,ch
odersh
, beenden Sie ihn mites
. Ex.bus
=>buses
.Wenn es
y
mit einem Konsonanten endet , ändern Sie den Werty
inies
. Ex.penny
=>pennies
.Wenn es mit
f
oder endetfe
, ändern Sie es inves
. Ex.knife
=>knives
.Wenn es
o
mit einem Konsonanten endet , ändern Sie es inoes
. Ex.potato
=>potatoes
.
Aufgabe
Sie erhalten ein Substantiv. Sie müssen das angegebene Substantiv in Plural konvertieren und ausgeben.
Regeln
Sie erhalten keine unregelmäßigen Substantive wie
mouse
undmoose
.Sie erhalten keine Ausnahmen wie
safe
(safes
; Verletzung von # 4),piano
(pianos
; Verletzung von # 5) undo
(oes
; Verletzung von # 5).Sie erhalten keine Wörter mit zwei oder mehr möglichen Pluralformen wie
mosquito
(mosquitos
odermosquitoes
) undroof
(roofs
oderrooves
).Sie erhalten keine unzähligen Substantive.
y
zählt nicht als Vokal.
Beispiele
car => cars
bus => buses
potato => potatoes
knife => knives
penny => pennies
exception => exceptions
wolf => wolves
eye => eyes
decoy => decoys
radio => radios
quelle
Antworten:
Mathematica, 9 Bytes
Ja, dafür gibt es ein eingebautes!
Beispielausgabe
quelle
Retina ,
575356555857 BytesVielen Dank an MartinEnder für einige Golfvorschläge
Vielen Dank an BusinessCat für das Golfen mit 1 Byte
Probieren Sie es online!
Erklärung (veraltet)
Änderungen
{consonant}y
an{consonant}ie
Hängt eine
e
an , wenn das Wort Ende mit einem{consonant}o
,f
,x
,z
,s
,sh
oderch
.Ändert ein Ende
fe
zuve
Fügen Sie
s
zum Schluss ein an das Wort an.Bearbeitungen
eye
als Beispielquelle
y
Verwendung erfassen wollen$1
JavaScript (ES6),
10997 ByteProbieren Sie es online!
quelle
()
vorfe
?replace()
Iterationen enthalten einen Verweis auf die erste übereinstimmende Gruppe (mit$1
). Deshalb brauche ich hier eine leere passende Gruppe.(?<![aeiou])y
?Batch, 325 Bytes
quelle
@echo off
am Anfang und nicht@
überall? Auch@set/ps=
scheint ein bisschen rostig von einem Telefon. Wird nicht dies
Variable ohnehin die Slicing - Werte akzeptieren?@echo off
ist bereits 9 Bytes ohne die Newline, also speichert es mich nichts. Wird auch@set/ps=
benötigt, um den Wert zuerst einzugeben.Haskell,
216207205 BytesVielen Dank an @Lynn, @ user1472751 und @Laikoni für die Hilfe!
Lesbar
Erläuterung
import Data.List
für die FunktionisSuffixOf
.endsWithOneOf
(€
in der Golfversion) gibt zurück, ob eines der Listenelemente ein Ende der Zeichenfolge ist.consonants(c)
ist nur eine Liste aller Konsonanten.Schließlich
pluralize(p)
prüft die Endungen und kehrt die richtige Pluralisierung.Beispiel:
quelle
€
mehrere Bytes lang sind, sodass Ihre Lösung 226 Bytes umfasst. (Code-Golf-Herausforderungen werden explizit in Bytes gewertet, da Sie beim Zählen von Zeichen manchmal schummeln können.) Sie können es jedoch einfach in umbenennen!
! Außerdemwords"s x z ch sh"
spart 5 Byte. Entfernen Sie die Parens(map(:"o")c))
und(map(:"y")c))
sparen Sie 4 weitere.c=['b'..'z']\\"eiou"
da'a'
immer entfernt wird.0<1
ist ein Byte kürzer alsTrue
. Auch Zeilenumbrüche haben die gleiche Byteanzahl wie;
, machen den Code jedoch ein bisschen besser lesbar.Perl, 66 + 2 (
-pl
Flag) = 68 BytesVerwenden von:
Probieren Sie es auf Ideone.
quelle
Röda , 80 Bytes
Die Funktion ändert ihr Argument. Verwendung:
main word { f word; print word }
Hier ist eine Version, die einen Rückgabewert (83 Bytes) verwendet:Und ist eine Funktion , die unendlich viele Werte aus dem Eingangsstrom gelesen und schiebt Pluralformen mit dem Ausgangsstrom (
8783 Bytes):Es ist eine anonyme Funktion, da dies kürzer ist als das Erstellen einer benannten Funktion.
quelle
f&s
)?f("word")
PHP,
103100 BytesProbieren Sie es online!
Die
preg_replace
Funktion nimmt eine Reihe von Mustern und Ersetzungen auf.quelle
-R
und speichern$argn
. Und wenn Sie eine Behauptung mity
Save Two verwenden:(?<![aeiou])y$
Ermöglichtie
als Ersatz: Nein\1
, keine Anführungszeichen.([^aeiou]o|sh?|x|z|ch)$
-R
(aber nicht-r
), sodass sich die Byteanzahl leider nicht ändert. Aber der Lookbehind-Vorschlag funktioniert großartig. Vielen Dank.Python 3,
271239199 BytesVielen Dank an @ovs für die Reduzierung um 72 Bytes!
Probieren Sie es online!
quelle
elif
. Die einzelnen Zeichenlisten können durch Zeichenfolgen ersetzt werden. Das Umschalten auf Python spart zusätzliche 3 Bytes. tioelif
s aber nicht kombiniert , weil das heißtpotato
wirdpotaties
.print(s+"s")
und entfernen Sie die Sonst-Groß- / Kleinschreibung bei jedem Anhängen an das Wort. Tioand/*
und ersetzenor/+
und eine unbenannte Lambda-Funktion erstellen, erhalten Sie sie unter 200 Byte (ich habe die Fälle ein wenig vertauscht)print(s+"s")
ist schlau. Alles hat sich geändert; Du hast so ziemlich alles umgeschrieben, lol. Vielen Dank! (Ich wusste nicht einmal, dass Sie so etwas tun könnenTrue and "string"
)sed, 70
79bytes69
78+ 1 für-E
(BSD) /-r
(GNU) -FlagDirekter Port der Retina-Antwort .
quelle
Pip ,
63-61BytesSo nah daran, die Retina zu fangen! Aber es wird wahrscheinlich nicht passieren. :(
Probieren Sie es online!
Erläuterung
Grundlegende Strategie:
R
eplace führt mehrere Ersetzungen nacheinander durch, wenn Listen mit Mustern und Ersetzungen angegeben werden. Wir möchten folgende Ersetzungen vornehmen:(sh?|x|z|ch)$
-> füge eine
[^aeiou]y
-> ändere dasy
zui
und füge eine
fe?
-> änderev
und füge eine
[^aeiou]o
-> füge eine
Dann wollen wir ein Unentschieden
s
angehen.Tricks:
C
Operator, dem ein regulärer Ausdruck gegeben wurde, schließt ihn in eine Erfassungsgruppe ein.C`xyz`
ist ein Byte kürzer als`(xyz)`
.s
(und uns mit der Rangfolge vonR
und zu befassen.
), können wir einfachO
den Hauptteil des Wortes ausgeben und das danns
separat drucken .Code mit Leerzeichen und Kommentaren:
quelle
C #
73163 Bytes:Ja, eine andere Sprache ist integriert (obwohl Sie einen Verweis hinzufügen müssen
System.Data.Entity.Design.dll
)Benutzen:
Ausgabe:
quelle
Python
199187176 Bytesquelle
Schienenläufer, 18 Bytes
Beispiel:
quelle
Python, 296 Bytes
quelle
Direkter Hafen von Retina:
Ruby , 111 Bytes
Probieren Sie es online!
Rufen Sie via auf
ruby -lpe
und geben Sie eine Datei wieinput.txt
beim ersten CLI-Argument an.quelle
C 321 Bytes
Prüfung:
Ergebnisse:
quelle
wolves
nicht seinwolfves
.Java 7, 408 Bytes
Golf gespielt:
Grundsätzlich wird getestet, wie das Ende der Zeichenfolge lautet, und Buchstaben werden hinzugefügt / ersetzt, je nachdem, in welchem Fall dies der Fall ist. Der Boolesche Wert und der String am Anfang dienen nur dazu, Wiederholungen in den Testfällen zu entfernen und den Code zu verkleinern.
Lesbare Version:
quelle
Java
quelle
isVowel
eine native Funktion istisVowel
im Code angezeigt werden sollte, sieht nicht nach einem eingebauten aus.