Ist es ein seltsames Wort?

29

Herausforderung

Bestimmen Sie anhand eines einzelnen Wortes als Eingabe, ob das Wort gerade oder ungerade ist.

Gerade und ungerade Wörter

Nimm die allgemeinen Regeln an:

odd + odd = even
even + odd = odd
odd + even = odd
even + even = even

Im Alphabet sind die ungeraden Buchstaben:

aeiou

Und die geraden Buchstaben sind:

bcdfghjklmnpqrstvwxyz

Gleiches gilt für Großbuchstaben ( AEIOUungerade und BCDFGHJKLMNPQRSTVWXYZgerade).

Dann 'addieren' Sie jeden Buchstaben des Wortes. Zum Beispiel ist das Wort catsäquivalent zu:

even + odd + even + even

Welches vereinfacht zu:

odd + even

Was weiter vereinfacht:

odd

Das Wort catsist also seltsam.

Beispiele

Input:  trees
Output: even

Input:  brush
Output: odd

Input:  CAts
Output: odd

Input:  Savoie
Output: even

Input:  rhythm
Output: even

Regeln

Alle Eingaben sind ein einzelnes Wort, das nur alphabetische Zeichen enthält.

Wenn das Wort ungerade ist, geben Sie einen Wahrheitswert aus. Wenn das Wort gerade ist, geben Sie einen falschen Wert aus.

Gewinnen

Der kürzeste Code in Bytes gewinnt.

Beta-Zerfall
quelle
1
Könnten Sie ein Beispiel für ein Wort ohne ungerade Buchstaben hinzufügen?
Hedi
@Hedi Ich habe einen hinzugefügt, Rhythmus
Beta Decay
7
Ex Cuse Sie. Odd Word ™ wurde bereits von JLee als Marke eingetragen. Dies ist eine nicht autorisierte Verwendung des Begriffs. : P
Deusovi
2
Dies bittet um eine reine Regex-Vorlage
Rohan Jhunjhunwala
2
Enthält die Eingabe garantiert nur alphabetische Zeichen?
DJMcMayhem

Antworten:

18

EXCEL, 79 Bytes:

=MOD(SUMPRODUCT(LEN(A1)-LEN(SUBSTITUTE(LOWER(A1),{"a","e","i","o","u"},""))),2)

Eingabe:
Diese Funktion kann an einer beliebigen Stelle platziert werden, AUSSER A1. Geben
Sie Ihr Wort in A1 ein.

Ausgabe: 0 wenn gerade, 1 wenn ungerade.

Beta-Zerfall
quelle
13

JavaScript (ES6), 34 41 33 32 Byte

Dank Arnauld 1 Byte gespart:

s=>~s.split(/[aeiou]/i).length&1
  • Ungerades Wort: kehrt zurück 1
  • Gerade Worte: kehrt zurück 0


Bisherige Lösungen:

33 Bytes dank Arnauld:

s=>s.split(/[aeiou]/i).length&1^1
  • Ungerades Wort: kehrt zurück 1
  • Gerade Worte: kehrt zurück 0

Ein anderer Weg ohne bitweise Operatoren:

s=>++s.split(/[aeiou]/i).length%2

41 Bytes:

(s,a=s.match(/[aeiou]/ig))=>a&&a.length%2
  • Ungerades Wort: kehrt zurück 1
  • Gerade Wörter mit ungeraden Buchstaben: kehrt zurück 0
  • Gerade Wörter ohne ungerade Buchstaben: kehrt zurück null

42 zurückzugebende Bytes 0anstelle von null:

(s,a=s.match(/[aeiou]/ig))=>a?a.length%2:0

34 Bytes, Brüche bei Wörtern ohne ungerade Buchstaben:

f=s=>s.match(/[aeiou]/ig).length%2

2 Bytes gespart dank Shaun H.

s=>s.match(/[aeiou]/ig).length%2
Hedi
quelle
1
Diese Methode bricht ab, wenn das Wort keine Vokale enthält. Das heißt: f=wird nicht benötigt und der Aufruf von exec für das reguläre Objekt ist kürzer. s=>/[aeiou]/ig.exec(s).length%2
Shaun H
Ich habe nicht das gleiche Ergebnis execmit der gFlagge.
Hedi
Verdammtes Gehirn, ja, ignoriere das, f = wird aber immer noch nicht benötigt
Shaun H
Könntest du tun s=>s.split(/[aeiou]/i).length&1^1?
Arnauld
1
s=>~s.split(/[aeiou]/i).length&1ist eigentlich ein Byte kürzer.
Arnauld
8

Brain-Flak 206 196 192 178 + 3 = 181 Bytes

Probieren Sie es online!

([]<{({}[((((((()()())){}){}){}){}){}()]){({}[({}())]){({}[({})]){({}[({}()())]){({}[({})]){({}<>)(<>)}}}}}{}{}}><>[[]]<>()()){(({}[<>(())<>()()])){{}({}())((<>)<>)}{}}{}<>({}<>)  

Dies erfordert, dass das -cFlag im ASCII-Modus ausgeführt wird und der Länge des Programms 3 zusätzliche Bytes hinzugefügt werden.

Ungolfed

([]<
{({}[(((((()()()){}){}){}){}){}()])
 {
  ({}[()()()()])
  {
   ({}[()()()()])
   {
    ({}[(()()()){}])
    {
     ({}[(()()()){}])
     {
      ({}<>)
      (<>)
     }
    }
   }
  }
 }
 {}
}
><>[[]]<>)
(<(()()<>)>)<>{({}[()])<>(({}()[({})])){{}(<({}({}))>)}{}<>}{}<>({}<{}><>)

Erläuterung

Speichern Sie zuerst die Stapelhöhe für zukünftige Zwecke

([]<...>

Dann, während der Stapel nicht leer ist (setzt voraus, dass keines der Zeichen Null ist)

{...}

Subtrahiere siebenundneunzig (und speichere drei für spätere Optimierungen)

({}[((((((()()())){}){}){}){}){}()])

Wenn es nicht Null ist (dh nicht a)

{...}

Subtrahiere 4 (und speichere 4 für spätere Optimierungen)

({}[({}())])

Wenn es nicht Null ist (dh nicht e)

{...}

Subtrahiere 4 (und speichere 4 für spätere Optimierungen)

({}[({})])

Wenn es nicht Null ist (dh nicht i)

{...}

Subtrahiere 6 (und speichere 6 für spätere Optimierungen)

({}[({}()())])

Wenn es nicht Null ist (dh nicht o)

{...}

Subtrahiere 6 (speichere 6, da das Programm eine spätere erwartet)

({}[({})])

Wenn es nicht Null ist (dh nicht u)

{...}

Verschieben Sie den Rest auf den anderen Stapel und setzen Sie eine Null auf den aktiven Stapel, um alle ifs zu umgehen

({}<>)(<>)

Sobald alle Wenns entkommen sind, entfernen Sie die Null und die Sechs

{}{}

Nachdem alle Zeichen verarbeitet wurden, subtrahieren Sie die Höhe des Offsets von der ursprünglich gespeicherten Höhe.

...<>[[]]<>)

Mod um zwei

{(({}[<>(())<>()()])){{}({}())((<>)<>)}{}}{}<>({}<>) 
Weizen-Assistent
quelle
Ich denke -cnur +1 Byte da immer Perl Antwort auch nur 1 Byte / Flag hinzufügt.
ThreeFx
1
@ThreeFx Das perl -pe'code'liegt daran, dass nur ein Byte länger ist als perl -e'code'.
Dennis
8

C, 42 Bytes

f(char*s){return*s&&2130466>>*s&1^f(s+1);}

Dies funktioniert mit GCC 4.x auf einer x86-64-CPU. Die Ergebnisse können je nach Einrichtung variieren.

Testen Sie es auf repl.it .

Auf Kosten von 5 weiteren Bytes kann undefiniertes Verhalten vermieden werden, sodass der Code funktionieren sollte, solange int s mindestens 32 Bit breit sind.

f(char*s){return*s&&2130466>>(*s&31)&1^f(s+1);}

Wie es funktioniert

Modulo 32 , die Zeichencodes aller ungeraden Buchstaben sind 1 , 5 , 9 , 15 und 21 . 2130466 ist die 32-Bit-Ganzzahl, die an diesen Stellen gesetzte und an allen anderen Stellen nicht gesetzte Bits hat.

Wenn f für eine Zeichenfolge aufgerufen wird, wird zuerst überprüft, ob das erste Zeichen der Zeichenfolge ein Nullbyte (Zeichenfolgenabschlusszeichen) ist. Wenn dies der Fall ist, *sergibt sich 0 und f gibt 0 zurück . Ansonsten *sergibt sich der Zeichencode eines Buchstabens und das richtige Argument des logischen AND ( &&) wird ausgeführt.

Für >>generiert GCC eine Schichtanweisung. Auf einer x86-64-CPU ignoriert der entsprechende Befehl für eine 32-Bit-Ganzzahl alle bis auf die unteren 5 Bits des rechten Arguments, wodurch das Reduzieren von *sModulo 32 vermieden wird . Die Rechtsverschiebung und das folgende bitweise UND mit 1 extrahieren das Bit von 2130466 , das dem Buchstaben entspricht. Dies ist genau dann 1, wenn der Buchstabe ungerade ist.

Anschließend inkrementieren wir den Zeiger s (wobei der erste Buchstabe effektiv verworfen wird), rufen f rekursiv für die enthauptete Zeichenfolge auf und nehmen das bitweise XOR des Ergebnisses von oben und das Ergebnis des rekursiven Aufrufs.

Dennis
quelle
Tolles bisschen kluge Arbeit!
Keyu Gan
erees Return 0 in Ideone, ist es richtig?
RosLuP
@RosLuP Nein, das stimmt nicht. Es funktioniert zwar auf meinem Computer und auf repl.it (möglicherweise, weil die Version von GCC ganz anders ist).
Dennis
Ja, es ist definitiv der Compiler. Mit Clang 3.7 funktioniert es auch auf Ideone .
Dennis
7

sed 44 (42 + 1 für -n) 43

-1 danke an Neil

s/[aeiou][^aeiou]*[aeiou]//gi
/[aeiou]/Ico

Drucke ofür ungerade und nichts für gerade

Riley
quelle
s/[aeiou][^aeiou]*[aeiou]//gikönnte dir ein byte sparen, wenn ich richtig gezählt habe.
Neil
@ Neil Yep! Ich wünschte, sed könnte nicht gierig suchen.
Riley
7

Python, 41 Bytes

lambda s:sum(map(s.count,"aeiouAEIOU"))%2
xnor
quelle
6

Python, 42 Bytes

lambda s:sum(c in"aeiouAEIOU"for c in s)%2

Hier gibt es nicht viel zu erklären. Eine unbenannte Funktion, die 0 oder 1 zurückgibt.

DJMcMayhem
quelle
6

Brain-Flak , 524, 446 , 422 Bytes

{(<((((()()()()){}){}){}<>)>)<>{({}[()])<>(({}[({})]())){{}(<({}({}))>)}{}<>}{}<>([(((({}<{}<>>))))]()){(<{}>)<>({}[()])<>}<>({}())<>{}([{}]()()()()()){(<{}>)<>({}[()])<>}<>({}())<>{}(((()()())){}{}[{}]){(<{}>)<>({}[()])<>}<>({}())<>{}(((()()()()())){}{}[{}]){(<{}>)<>({}[()])<>}<>({}())<>{}((((()()()){}())){}{}[{}]){(<{}>)<>({}[()])<>}<>({}())<>{}}(<(()())>)<>{({}[()])<>(({}[({})]())){{}(<({}({}))>)}{}<>}{}<>({}<{}<>>)

Probieren Sie es online!

Ungolfed, besser lesbare Version:

{((((()()()()){}){}){})(<({}<>)>)<>{({}[()])<>(({}()[({})])){{}(<({}({}))>)}{}<>}{}<>({}<{}><>)((((({})))))
(())
({}[{}]){(<{}>)<>({}[()])<>}<>({}())<>{}
(()()()()())
({}[{}]){(<{}>)<>({}[()])<>}<>({}())<>{}
(()()()()()()()()())
({}[{}]){(<{}>)<>({}[()])<>}<>({}())<>{}
(()()()()()()()()()()()()()()())
({}[{}]){(<{}>)<>({}[()])<>}<>({}())<>{}
(()()()()()()()()()()()()()()()()()()()()())
({}[{}])
{(<{}>)<>({}[()])<>}<>({}())<>{}}<>(()())(<({}<>)>)<>{({}[()])<>(({}()[({})])){{}(<({}({}))>)}{}<>}{}<>({}<{}><>){{}([()])
(<><>)}({}{}())
DJMcMayhem
quelle
Die Ungolfed-Version scheint nicht zu funktionieren (TIO-Link kann nicht in Kommentar passen; _;)
Weizen-Assistent
6
"besser lesbar"
Rohan Jhunjhunwala
6

Jelly , 13 12 11 Bytes

-1 Byte dank @Luis Mendo ( zum Ersetzen verwenden %2)
-1 Byte dank @Dennis (String-Komprimierung verwenden)

Œlf“¡ẎṢɱ»LḂ

Alle Testfälle sind bei TryItOnline

Wie?

Œlf“¡ẎṢɱ»LḂ - Main link takes an argument - s
Œl          - lowercase(s)
   “¡ẎṢɱ»   - string of lowercase vowels (compression using the words a and eoui)
  f         - filter - keep only the vowels
         L  - length - the number of vowels
          Ḃ - Bit (modulo 2)

Nicht konkurrierend, 5 Bytes (da ich gerade die Funktion hinzugefügt habe Øc)

fØcLḂ

Testfälle auch bei TryItOnline

Wie oben, Øcliefert jedoch die Vokale des lateinischen Alphabets.'AEIOUaeiou'

Jonathan Allan
quelle
1
Ich denke, Sie können %2durch
Luis Mendo
7
euoi ist ein Schrei der leidenschaftlichen Entrückung in alten Bacchic-Feiern , so dass Sie das Wörterbuch verwenden und die Vokale als erhalten können “¡ẎṢɱ».
Dennis
@ Tennis - LOL natürlich!
Jonathan Allan
2
@ Tennis Wie genau funktioniert das? Ist es nur eine Basiskomprimierung, um den Index eines Wortes in einem riesigen Wörterbuch zu erhalten? Woher kommt das 'a'?
DJMcMayhem
2
@DJMcMayhem Es handelt sich um eine Basis-250-Komprimierung mit einem Wörterbuch (von dem ich glaube, dass es gerade von Dennis 'Computer stammt), wobei zwischen kurzen (weniger als 6 Zeichen) und langen Wörtern unterschieden wird. Ein Code zur Automatisierung der Erstellung komprimierter Zeichenfolgen wurde von Lynn geschrieben. Die nicht verwendeten 6 Bytes sind Jellys Zeichenketten, die Zeichen identifizieren “”«»‘’(es gibt auch Zeichenketten mit zwei Zeichen , die jedoch in komprimierten Zeichenketten verwendet werden).
Jonathan Allan
6

Haskell, 38 37 Bytes

odd.length.filter(`elem`"aeiouAEIOU")

Danke an Angs für ein Byte!

BlackCap
quelle
Wahrheit für ungerade, so müssen Sie oddstattdessen verwenden even. Spart ein Byte!
Angs
@Angs clever :)
BlackCap
4

Python 3, 53 Bytes

Dies kann wahrscheinlich weiter golfen werden:

lambda n:[x in 'aeiou' for x in n.lower()].count(1)&1
L. Steer
quelle
Entfernen Sie die Leerzeichen zwischen inund 'aeiou'und for, und verwenden Sie diese Option sum, um 8 Byte zu speichern: lambda n:sum(x in'aeiou'for x in n.lower())&1(Wie Sie jedoch aus DJMcMayhems Beitrag ersehen können, ist die Verwendung aller zehn Vokale ebenfalls kürzer.)
Jonathan Allan
1
Danke für die Tipps! Ich bemerkte die zusätzlichen Leerzeichen ein wenig nach dem Posten, aber ehrlich gesagt, waren @DJMcMayhem und ich identisch damit, dass er die beste Version ist, die ich mir für eine Python-Lösung vorstellen kann. Ich wusste nichts über das sum()Kommando vor diesem Golf, also habe ich wieder etwas gelernt! Einen schönen Tag noch :)
L. Steer
4

Java, 73

boolean f(String s){return s.replaceAll("(?i)[^aeiou]","").length()%2>0;}

Ich habe ein paar andere Java-Antworten gesehen, die ich sonst nicht geteilt hätte. Danke an Phaeze für das Speichern eines Bytes.

dpa97
quelle
1
Ich denke, Sie können ein Byte mit%2>0
JustinM - Reinstate Monica
4

C 52 Bytes

h(o){o=strpbrk(o,"aeiouAEIOU");return o?1^h(o+1):0;}

das Wesentliche und das Ergebnis:

main()
{int   k;
 char *a[]={"trees","brush","CAts","Savoie","rhythm", 0};

 for(k=0;a[k];++k)
     printf("[%s]=%s\n", a[k], h(a[k])?"odd":"even");
}

/*
91
[trees]=even
[brush]=odd
[CAts]=odd
[Savoie]=even
[rhythm]=even

*/
RosLuP
quelle
Ich versuche, int als Zeiger zu verwenden, aber es wird nicht kompiliert, wo die Verwendung von inirection * ... die zuerst hier gedruckte Lösung falsch war ...
RosLuP
h(o){return~-o?1^h(1+strpbrk(o,"aeiouAEIOU")):1;}Spart 3 Bytes.
Dennis
s; h (o) {s = ~ -o? 1 ^ h (1 + strpbrk (o, "aeiouAEIOU")): 1;} das Ergebnis ist in der globalen Variablen s ...
RosLuP
Das ist leider nicht erlaubt. Funktionen müssen wiederverwendbar sein. Wenn Sie sie mehrmals verwenden, kann dies zu Problemen führen. Das Speichern der Ausgabe in einer Variablen ist nur zulässig, wenn Sie den Speicherort als Benutzereingabe verwenden.
Dennis
Ich denke in diesem Fall ist die Wiederverwendung möglich, da der Startwert von s jetzt nicht wichtig ist ... ok ok jetzt denke ich, dass etwas schief gehen kann ... Danke
RosLuP
3

Pyth, 14 Bytes

%l@"aeiou"rQ02

Probieren Sie es online!

Erläuterung:

  @"aeiou"       Grab only the vowels
          rQ0      From lowercased input
 l                 Get the length of this
%            2     And mod 2 to check for oddness
Steven H.
quelle
3

Ruby, 30 Bytes

->w{w.scan(/[aeiou]/i).size%2}
m-chrzan
quelle
3

Vim, 32, 31 , 29 Tastenanschläge

:s/[^aeiou]//gi
C<C-r>=len(@")%2<cr>

Da der V-Interpreter abwärtskompatibel ist, können Sie ihn online ausprobieren! genau hier.

Ein Drei Bytes gespart dank m-chrzan!

DJMcMayhem
quelle
1
Können Sie s/.../gianstelle von tun s/\c.../g?
m-chrzan
@ m-chrzan Woah, super Tipp. Vielen Dank!
DJMcMayhem
Auch '<C-r>"'-> @".
m-chrzan
1
Ich habe es vor ungefähr @"15 Minuten herausgefunden. Der beste vim Tipp, den ich habe, ist zu verwenden :help foound /die Dokumentation: P.
m-chrzan
2
Nun, da wir über Golf sprechen, :h fooist es kürzer. : P
DJMcMayhem
3

Java 7, 88

boolean f(char[]s){int x=0;for(char c:s)if("aeiouAEIOU".indexOf(c)>=0)++x;return x%2>0;}

Ungolfed:

  boolean f(char[] s) {
    int x = 0;
    for (char c : s) {
      if ("aeiouAEIOU".indexOf(c) >= 0) {
        ++x;
      }
    }
    return x % 2 > 0;
  }

quelle
3

Dummkopf , 14 Bytes (nicht konkurrierend)

ar[aeiou]}et}T

Ich dachte, dies wäre eine lustige und einfache Herausforderung für eine neue Sprache.

Erläuterung

  • a - Schieben Sie ein neues Array in die Matrix
  • r[aeiou]} - Zählen Sie die Vorkommen aller Werte, die mit dem regulären Ausdruck "[aeiou]" im ersten Array übereinstimmen (da das erste Array die Eingabe enthält), ignorieren Sie die Groß- und Kleinschreibung und verschieben Sie diesen Wert an das Ende des letzten Arrays.
  • e - Wenn die letzte Zahl im letzten Array gerade ist (die wir auf die Anzahl der Vorkommen festgelegt haben), führen Sie die nächsten Operationen bis zu einer schließenden Klammer ("}") aus.
  • t - Beenden Sie die Ausführung, löschen Sie die Matrix und setzen Sie den ersten Wert auf false
  • }- Ende des eCodeblocks
  • T - Beenden Sie die Ausführung, löschen Sie die Matrix und setzen Sie den ersten Wert auf true

Probieren Sie es online!

Verwenden Sie das Eingabefeld, um das Wort einzugeben.

Ich werde bald Dokumentation hinzufügen ...

MCMastery
quelle
2

PowerShell v2 +, 45 bis 42 Byte

($args[0]-replace'[^aeiouAEIOU]').Length%2

Nimmt Eingaben entgegen $args[0], sendet sie durch -replace, um alle Nicht-Vokal-Zeichen zu entfernen, nimmt das Ergebnis auf .lengthund %2prüft, ob es ungerade / gerade ist.

Beispiele

PS C:\Tools\Scripts\golfing> 'trees','brush','CAts','Savoie','rhythm'|%{"$_ --> "+(.\is-it-an-odd-word.ps1 $_)}
trees --> 0
brush --> 1
CAts --> 1
Savoie --> 0
rhythm --> 0
AdmBorkBork
quelle
2

J, 20 Bytes

2|+/@e.&'aeiouAEOIU'

Unkomplizierter Ansatz

Erläuterung

2|+/@e.&'aeiouAEOIU'  Input: string S
     e.&'aeiouAEOIU'  Test each char in S for membership in 'aeiouAEOIU'
  +/@                 Sum those values
2|                    Take it modulo 2 and return
Meilen
quelle
Haha, ich habe gerade eine J-Antwort gepostet (jetzt gelöscht) 1 Byte länger als diese. Gute Arbeit!
Conor O'Brien
Wo ist der Befehl für "Eingaben übernehmen"?
RosLuP
@RosLuP Dies ist ein Verb (eine Funktion), das ein einzelnes Argument als Eingabe verwendet. J verwendet die implizite Programmierung, sodass Befehle miteinander verkettet werden und implizit Werte übergeben werden
Meilen
2

Japt, 7 Bytes

1&Uè"%v

Online testen! Ausgänge 1 für ungerade, 0 für gerade.

Wie es funktioniert

         // Implicit: U = input string
  Uè     // Count the number of matches of the following regex in the input:
    "%v  //   /[AEIOUaeiou]/g
1&       // Take only the first bit (convert 1, 3, 5, etc. to 1, and others to 0)
         // Implicit output
ETHproductions
quelle
2

Oktave, 34 Bytes

@(s)mod(nnz(~(s'-'aeiouAEIOU')),2)


s'-'aeiouAEIOU'    % Creates a 2D-matrix where each of the odd letters are 
                   % subtracted from the string s
~(s'-'aeiouAEIOU') % Negates that array, so the all zero elements become 1
nnz( .... )        % Counts all the non-zero elements (the odd letters)
mod(nnz( ....),2   % Takes this sum modulus 2

Dies ist 6 Byte kürzer als der traditionelle Ansatz ismember, @(s)mod(sum(ismember(s,'aeiouAEIOU')),2)und zwei Bytes kürzer als der regex Ansatz: @(s)mod(nnz(regexpi(s,'[aeiou]')),2).

Teste es hier .

Stewie Griffin
quelle
2

PHP, 41 Bytes

<?=count(spliti("[aeiou]",$argv[1]))%2-1;

Dies gibt -1 für wahr und 0 für falsch aus.

user59178
quelle
2

Mathematica, 44 Bytes

OddQ@StringCount[#,Characters@"aeiouAEIOU"]&

Gibt True für eine ungerade Zeichenfolge und False für eine gerade Zeichenfolge.

Julien Kluge
quelle
1
+1 für jeden Mann oder jede Frau, die Mathematica lernen
Magic Octopus Urn
2

q, 29 Bytes

{mod[sum x in "aeiouAEIOU";2]}
Liam Baron
quelle
2

C # 64 62 56 50 Bytes

s=>1>s.Split("aeiouAEIOU".ToCharArray()).Length%2;
  • Wir benutzen bereits linq, also spart Contains 2 Bytes über IndexOf
  • Durch die Verwendung der Methode Überladung von Count werden 6 Bytes eingespart
  • Vielen Dank an @Milk, dass er eine saubere Methode vorgeschlagen und weitere 6 Bytes eingespart hat

Eine anonyme Funktion, die eine Zeichenfolge verwendet und die ungeraden Buchstaben zählt, gibt true zurück, wenn eine ungerade Anzahl vorhanden ist, oder false, wenn dies nicht der Fall ist.

Diese neue Lösung teilt die Zeichenfolge in alle Zeichen des angegebenen Zeichen-Arrays auf. Die Mechanik dieser Umkehrung der Bedeutung des %2Ergebnisses; 0 ist jetzt ungerade und 1 gerade daher die 1>.

Probieren Sie es hier online aus!

JustinM - Setzen Sie Monica wieder ein
quelle
Es sind nur 50 Bytes zum string.Split()Zählen der Vokale erforderlich, und Sie benötigen kein LINQ. s=>1>s.Split("aeiouAEIOU".ToCharArray()).Length%2;
Milch
@milk Danke dafür, sehr saubere Lösung.
JustinM
1

Netzhaut , 19 Bytes

Mi`[aeiou]
[13579]$

Probieren Sie es online! (Die erste Zeile aktiviert eine durch Zeilenvorschub getrennte Testsuite.)

Die erste Zeile zählt die Vokale in der Eingabe. Die zweite Zeile prüft, ob das Ergebnis ungerade ist.

Martin Ender
quelle
1

MATL , 8 , 7 Bytes

13Y2mso

Probieren Sie es online!

Erläuterung:

13Y2    % Push the string 'aeiouAEIOU', a predefined literal. 
    m   % For each char of the input that is in that string, push a one. For every other element, push a zero.
     s  % Sum this array
      o % Mod 2
DJMcMayhem
quelle