Đó có phải là một từ mạnh mẽ?


33

Họ nói rằng đó hatelà một từ mạnh mẽ. Tôi muốn tìm hiểu lý do tại sao, vì vậy tôi đã có một cái nhìn tốt về từ này.

Tôi nhận thấy rằng mọi phụ âm đều có nguyên âm sau nó. Điều đó làm cho nó trông khá mạnh đối với tôi, vì vậy tôi quyết định rằng đó là điều làm cho một từ trở nên mạnh mẽ.

Tôi muốn tìm những từ mạnh hơn, vì vậy tôi sẽ cần một chương trình cho nó!

Tìm từ mạnh

Từ mạnh là những từ mà mọi phụ âm (chữ cái trong bộ BCDFGHJKLMNPQRSTVWXZ) được theo sau bởi một nguyên âm (chữ cái trong bộ AEIOUY). Đó là nó. Không có gì khác quan trọng.

Nếu từ bắt đầu bằng nguyên âm, bạn không phải lo lắng về bất kỳ chữ cái nào trước phụ âm đầu tiên. Nếu từ đó hoàn toàn không có phụ âm, thì nó tự động là một từ mạnh!

Một số ví dụ về các từ mạnh là agate, hateyou. agatevẫn là một từ mạnh bởi vì mặc dù nó bắt đầu bằng một nguyên âm, mọi phụ âm vẫn được theo sau bởi một nguyên âm. youlà một từ mạnh vì nó không có phụ âm.

Không có giới hạn về độ dài cho các từ mạnh.

Các thách thức

Viết chương trình hoặc hàm lấy một chuỗi không trống làm đầu vào và xuất giá trị trung thực nếu đó là một từ mạnh hoặc giá trị giả nếu không phải là nó.

Làm rõ

  • Bạn có thể quyết định lấy đầu vào bằng chữ thường hoặc chữ hoa. Chỉ định mà trong câu trả lời của bạn.
  • Các từ sẽ không chứa dấu câu nào. Chúng sẽ chỉ chứa các chữ cái đơn giản trong bộ ABCDEFGHIJKLMNOPQRSTUVWXYZ.
  • Thay vì các giá trị trung thực và giả, bạn có thể chọn hai giá trị riêng biệt và nhất quán để trả về giá trị đúng và sai. Nếu bạn làm điều này, chỉ định các giá trị bạn đã chọn trong câu trả lời của bạn.
    • Bạn có thể thay thế một giá trị giả cho một từ mạnh và một giá trị trung thực cho một từ không mạnh.

Các trường hợp thử nghiệm

Input      -> Output
hate       -> true
love       -> true
popularize -> true
academy    -> true
you        -> true
mouse      -> true
acorn      -> false
nut        -> false
ah         -> false
strong     -> false
false      -> false
parakeet   -> false

Chấm điểm

Vì đây là , câu trả lời có ít byte nhất sẽ thắng!



1
Là từ trống ""là một đầu vào có thể?
Silvio Mayolo

@SilvioMayolo Không phải vậy.
LyricLy

@LyricLy Nếu đầu vào là "học viện" thì đầu ra phải là sai, theo cách tôi hiểu vấn đề. Bởi vì 'm' là một phụ âm.
kiếm sự thật

1
một "chuối" là đầy thù hận
jstnthms

Câu trả lời:


18

JavaScript (ES6), 36 28 27 byte

Đã lưu 1 byte bằng cách đảo ngược kết quả, như được đề xuất bởi LarsW

Đưa đầu vào bằng chữ thường. Trả về falsecho một từ mạnh mẽ và truecho một từ không mạnh mẽ.

s=>/[^aeiouy]{2}/.test(s+0)

Làm sao?

Chúng tôi nối thêm một 0(không nguyên âm) ở cuối chuỗi đầu vào và tìm kiếm hai ký tự không nguyên âm liên tiếp. Điều này cho phép chúng tôi bao gồm cả hai trường hợp làm cho một từ không mạnh:

  • nó chứa hai phụ âm liên tiếp
  • hoặc nó kết thúc bằng một phụ âm

Các trường hợp thử nghiệm


Tại sao +0, mặc dù? Nó dường như hoạt động tốt mà không có nó
Matheus Avellar

1
@MeditusAvellar Nếu không có +0, nó sẽ trả về dương tính giả trên các từ kết thúc bằng một phụ âm.
Arnauld

Tôi thấy, không có điều đó, nó không thể tìm thấy 2 nguyên âm liên tiếp nếu đó là chữ cái cuối cùng của từ này. Thông minh!
Matheus Avellar

Bạn sẽ có thể bỏ qua !(hai giá trị riêng biệt)
LarsW

@LarsW Cảm ơn! Tôi đã không nhận thấy quy tắc này.
Arnauld

10

Python 2 , 48 byte

lambda s:'se, F'in`[v in'aeiouy'for v in s+'b']`

Hàm không tên lấy chuỗi (chữ thường) svà trả về Falsenếu mạnh hoặc Truenếu không.

Hãy thử trực tuyến! (đảo ngược kết quả để khớp với OP)

Làm sao?

Những từ không mạnh có một phụ âm theo sau là phụ âm hoặc kết thúc bằng phụ âm.

Mã này thêm một phụ âm vào cuối ( s+'b') để thực hiện bài kiểm tra bắt buộc chỉ dành cho hai phụ âm liên tiếp.

Nó tìm ra nếu mỗi chữ cái trong từ thay đổi là một nguyên âm với sự hiểu biết danh sách [v in'aeiouy'for v in s+'b'].

Bây giờ nó cần kiểm tra hai Falsekết quả liên tiếp (báo hiệu một từ không mạnh), nó làm như vậy bằng cách lấy một chuỗi đại diện (sử dụng `...`) danh sách này và tìm kiếm sự tồn tại của 'se, F'. Đây là chuỗi Đã tìm thấy ngắn nhất trong 'False, False'nhưng không ai trong số: 'True, True'; 'False, True'; hoặc 'True, False'.

Như một ví dụ xem xét 'nut', việc hiểu danh sách đánh giá từng chữ cái, vvề 'nutb'sự tồn tại trong việc 'aeiouy'mang lại danh sách [False, True, False, False], biểu diễn chuỗi của danh sách này '[False, True, False, False]'chứa 'e, F'ở đây: '[False, True, Fals>>e, F<<alse]'do đó hàm trả về Truenghĩa là nut không phải là một từ mạnh.


7

Thạch ,  10  9 byte

e€ØY;Ạ11ẇ

Một liên kết đơn âm lấy danh sách các ký tự và trả về:

  • 0 nếu mạnh
  • 1 nếu không

Hãy thử trực tuyến! hoặc xem bộ thử nghiệm .

Làm sao?

e€ØY;Ạ11ẇ - Link: list of characters, s      e.g. "hate"  or  "you"  or  "not"
  ØY      - consonant yield                   "BCDFGHJKLMNPQRSTVWXZbcdfghjklmnpqrstvwxz"
e€        - exists in? for €ach letter            [1,0,1,0]   [0,0,0]    [1,0,1]
     Ạ    - all truthy? (1 for any valid input)   1           1          1
    ;     - concatenate                           [1,0,1,0,1] [0,0,0,1]  [1,0,1,1]
      11  - literal eleven
        ẇ - sublist exists?                       0           0          1
          -  N.B.: left of ẇ implicitly makes digits so it looks for the sublist [1,1]

Lưu ý: Lý do sử dụng chỉ là để tiết kiệm một byte khi sử dụng 1(vì sau đó chúng tôi muốn sử dụng 11ngay lập tức).


hmm, các giá trị phù hợp ...
Erik the Outgolfer

Ý anh là gì?
Jonathan Allan

các hacky điều trong mã của bạn ... nếu không bạn có thể đã thực hiện e€ØY;1w11hoặc một cái gì đó
Erik các Outgolfer

Tại sao mười một? Các từ chuỗi dường như không được gắn với số mười một theo bất kỳ cách nào
hyiltiz

@hyiltiz khi dyad có một đối số bên trái là một số nó được chuyển đổi hoàn toàn thành một danh sách các chữ số thập phân, do đó mười một trở thành [1,1].
Jonathan Allan

5

05AB1E , 8 byte

žPS¡¦õÊP

Sử dụng mã hóa 05AB1E . Hãy thử trực tuyến!

Giải trình

žPS¡         # Split the string on consonants (bcdfghjklmnpqrstvwxz)
    ¦        # Remove the first element of the array to handle cases when the
               string starts with a consonant
     õÊP     # Check if the empty string is not in the array

Thí dụ

             # "popularize"
žPS¡         # ['', 'o', 'u', 'a', 'i', 'e']
    ¦        # ['o', 'u', 'a', 'i', 'e']
     õÊ      # [1, 1, 1, 1, 1]
       P     # 1

Có lẽ tôi đang thiếu một cái gì đó, nhưng điều này dường như luôn luôn trả về 1? Nó trả về 1 cho cả các trường hợp trung thực mà tôi đã thử và các bản thử nghiệm falsey.
- Phục hồi lại

(Ồ, tôi mới nhận thấy câu trả lời này (và câu hỏi) bao nhiêu tuổi. Tôi đoán có gì đó trong ngôn ngữ đã thay đổi trong lúc này không?)
- Phục hồi lại

@sundar Có bắt đẹp! Có vẻ như tôi đã phá vỡ chức năng phân chia tại một số điểm. Tôi sẽ sửa nó càng sớm càng tốt.
Ad Nam

5

R , 43 byte

function(s)grep("[^aeiouy]{2}",paste(s,""))

Hãy thử trực tuyến!

Một cổng câu trả lời JavaScript của Arnauld; trả về 1 cho những từ yếu và integer(0)cho những từ mạnh; nó nối thêm một (khoảng trắng) vào cuối chuỗi.

Điều này thực sự được vector hóa; với một vectơ của chuỗi, nó trả về các chỉ số (dựa trên 1) của các từ yếu.


Cùng một nhận xét ở đây, bạn không thể sử dụng $ trong regex thay vì thêm khoảng trắng?
Charlie

@Charlie Tôi không chắc bạn định sử dụng như thế nào $, quan tâm giải thích điều đó hơn nữa?
Giuseppe

Thích giải pháp này rất nhiều. Tôi nghĩ rằng logic rõ ràng hơn (và byte giống nhau) với paste0(s,0), nhưng đó chỉ là ngụy biện. Tôi nghĩ rằng @Charlie đang tham khảo một cái gì đó như thế này: grep("[^aeiouy]([^aeiouy]|$)",s)
user5957401

3

APL Dyalog, 20 byte

⎕←∧/2∨/0,⍨⍞∊'aeiouy'

Hãy thử trực tuyến!


3
Tôi không nghĩ bạn cần ⎕←.
Zacharý

@ Zacharý Tôi đã từng không đặt nó, nhưng sau đó tôi được thông báo (bởi Dennis, tôi tin) rằng một chương trình không nên giả sử được chạy trong REPL.
Oberon

Anh ấy nói với bạn về ngôn ngữ nào? Có phải cho Dyalog APL? Tôi biết chính sách đó chắc chắn áp dụng cho Python / JavaScript / vv.
Zacharý


2

Java (OpenJDK 8) , 93 81 byte

s->{int w=0,p=w,l;for(char c:s)w|=p&(p=l="aeiouy".indexOf(c)>>31);return w+p>=0;}

Hãy thử trực tuyến!


Tôi sợ booleans không phải là câu trả lời : s->{int w=0,p=w,l;for(char c:s){l="aeiouy".indexOf(c)>>31;w|=p&l;p=l;}return w+p>=0;}.
Jakob

1
Hoặc thậm chí bạn có thể làm điều này:s->{int w=0,p=w,l;for(char c:s)w|=p&(p=l="aeiouy".indexOf(c)>>31);return w+p>=0;}
Jakob

Câu trả lời hay, nhưng với thử thách này, một kết hợp regex đơn giản thực sự ngắn hơn một chút. Tuy nhiên, +1 từ tôi.
Kevin Cruijssen

1
@KevinCruijssen Regex của tôi rất tệ, không thể làm cho nó hoạt động được: D. Tôi sẽ giả vờ rằng tôi muốn là bản gốc
Roberto Graham

@RobertoGraham " Tôi sẽ giả vờ rằng tôi muốn là bản gốc " Chà, chắc chắn là như vậy. :) Và tôi cũng từng khá tệ ở regex, nhưng sau một vài câu trả lời khác ở đây trên PPCG bằng regex tôi đã quen với nó hơn. Và tôi đã tìm ra cách kết hợp các phụ âm sử dụng [a-z&&[^aeiouy]] trong câu trả lời trước đó của tôi . ;)
Kevin Cruijssen

2

Husk , 12 byte

ΛΣX_2m€¨γaıu

Hãy thử trực tuyến!

Cảm ơn H.PWiz đã giúp đỡ với -4. Trả về giá trị không nhất quán nhưng phù hợp hoặc sai.
Cảm ơn Leo cho -1, giờ đây trả về giá trị trung thực / sai lệch nhất quán.


Chuỗi nén ngắn hơn . Quá trình nén chuỗi vẫn còn quá chậm, tôi cần phải làm việc với nó nhiều hơn nữa
Leo

@Leo Tôi nghĩ đó là một vấn đề NP không may.
Erik the Outgolfer

2

Bình thường , 18 byte

:+Q1."2}M>åYà

Xác nhận tất cả các trường hợp thử nghiệm.

"Mượn" regex từ câu trả lời JS . Điều này trả về Falsecho những từ mạnh mẽ, Truenếu không


@KevinCruijssen Trên thực tế, Pyth sử dụng ISO-8859-1. Đó là lý do tại sao tôi không bị thuyết phục.
Ông Xcoder

1
@KevinCruijssen Bản mô tả người dùng của Downgoat cho tôi biết đó là 13 byte : 13 ISO-8859-1 bytes, 13 chars. Tôi nghĩ điều đó sẽ ổn thôi
Ông Xcoder

@KevinCruijssen Nên sửa ngay.
Ông Xcoder

@KevinCruijssen Tôi không thấy bất kỳ sự khác biệt. Mã bạn thấy trong câu trả lời của tôi là gì và bạn thấy mã nào trong liên kết thử nghiệm của tôi?
Ông Xcoder


2

Brachylog , 18 11 10 byte

,Ḷs₂{¬∈Ẉ}ᵐ

Hãy thử trực tuyến!

Gọn gàng và đơn giản (ngoại trừ có thể cho 2 byte ban đầu bổ sung để xử lý trường hợp phụ âm cuối, như "parakeet").

Là falsey cho những từ mạnh mẽ và trung thực cho những từ không mạnh mẽ.

,Ḷ               % append a newline (non-vowel) at the end of input, 
                 %   to catch final consonants
     s₂          % the result has some substring of length 2
       {¬∈Ẉ}ᵐ    % where neither of its elements belong to  
                 %   the set of alternate vowels (with "y")

1

Con trăn 2 , 58 byte

-30 byte bằng cách nhận ra nó có thể đơn giản như câu trả lời JS của Arnauld .

lambda s:re.search('[^aeiouy]([^aeiouy]|$)',s)<1
import re

Hãy thử trực tuyến!



Bạn không cần phải gán lambda cho một cái gì đó? tức làf=lambda s...
OldBunny2800

@ OldBunny2800 trừ khi bạn đang sử dụng tham chiếu trong mã của mình (có thể chấp nhận để tạo một hàm không tên mà người ta có thể truy cập để sử dụng lại với mã tiêu đề hoặc chân trang - ở đây có f=\trong một tiêu đề).
Jonathan Allan

Tôi nghĩ rằng bạn có thể thay thế chuỗi mẫu của mình '[^aeiouy]([^aeiouy]|$)'(24 byte) bằng "[^aeiouy]("*2+")|$)"(21 byte) để lưu 3 byte, dưới dạng nhóm trống (), không thay đổi hành vi tìm kiếm ( TIO ).
Jonathan Frech


1

Perl 5, 31 byte (30 + 1)

$_=''if/[^aeiouy](?![aeiouy])/

+1 byte cho -pcờ dòng lệnh. In từ nếu đó là một từ mạnh hoặc chuỗi trống nếu không.


"Hai giá trị riêng biệt và nhất quán"
L3viathan

@ L3viathan Chuỗi rỗng là sai và chuỗi không trống là sự thật. Điều này là hợp lệ.
LyricLy

Các quy tắc trung thực của @ L3viathan Perl thực sự rất thuận lợi cho những thách thức như thế này. Đây không phải là lần đầu tiên tôi khai thác sự thật chính xác đó.
Silvio Mayolo

Với các từ kết thúc dòng mới, điều này có thể được rút ngắn thành $_=$/if/[^aeiouy]{2}/.
nwellnhof

1

Thạch , 11 byte

e€ØY;1a2\¬Ȧ

Hãy thử trực tuyến!

e€ØY;1a2\¬Ȧ  Main link
 €           For each letter
e            Is it an element of
  ØY         The consonants (excluding Yy)?
    ;1       Append 1 (true) (consonant) to make sure last letter isn't consonant
       2\    For all (overlapping) slices of length 2 (the <link><nilad>\ functionality)
      a      Logical AND of the two values; is it a consonant pair?
         ¬   Logical NOT vectorizing; for each (overlapping) pair, is it not a consonant pair?
          Ȧ  Any and all; make sure all pairs are not consonant pairs

Vâng tôi biết tôi đã bị Jonathan Allan đánh bại rất nhiều nhưng dù sao tôi cũng muốn chia sẻ cách tiếp cận của mình: P

-4 byte bằng cách ăn cắp một chút câu trả lời Jonathan Allan (thay vì phụ thêm một phụ âm để kiểm tra cuối cùng chữ trường hợp cạnh, chỉ cần append 1)
-1 byte nhờ dặm


Bạn có thể tiết kiệm một byte bằng cách sử dụng a2\hoặc Ȧ2Ƥthay vìṡ2Ȧ€
dặm

@JonathanAllan facepalm Tôi cố tình làm chắc chắn sử dụng ØCđể đảm bảo Yyđược tính là một phụ âm bởi vì bằng cách nào đó tôi nhớ về phía sau. Cảm ơn!
HyperNeutrino

1

Awk, 39 byte

/([^aeiouy]{2}|[^aeiouy]$)/{print "n"}

in n cho từ không mạnh, không có gì (hoặc, chỉ là một dòng mới) cho từ mạnh

theo dõi gói và tìm kiếm hai nguyên âm không liên tiếp trên đầu vào chữ thường

thử nghiệm

$ awk -f strongwork.awk
hate
love
popularize
academy
you
mouse
acorn
n
nut
n
ah
n
strong
n
false
n
parakeet
n

1

Kotlin , 49 byte

{Regex(".*[^aeiouy]([^aeiouy].*|$)").matches(it)}

Đúng và sai được hoán đổi

Làm đẹp

{
    Regex(".*[^aeiouy]([^aeiouy].*|$)").matches(it)
}

Kiểm tra

var s:(String)->Boolean =
{Regex(".*[^aeiouy]([^aeiouy].*|$)").matches(it)}
data class TestData(val input: String, val output: Boolean)

fun main(args: Array<String>) {
    val items = listOf(
            TestData("hate", true),
            TestData("love", true),
            TestData("popularize", true),
            TestData("academy", true),
            TestData("you", true),
            TestData("mouse", true),
            TestData("acorn", false),
            TestData("nut", false),
            TestData("ah", false),
            TestData("strong", false),
            TestData("false", false),
            TestData("parakeet", false)
    )

    items
            .filter { s(it.input) == it.output }
            .forEach { throw AssertionError(it.toString()) }

    println("Test Passed")
}

Dùng thử

Dựa trên câu trả lời của @ Arnauld



1

Java 8, 53 42 byte

s->s.matches(".*[^aeiouy]([^aeiouy].*|$)")

-11 byte bằng cách sử dụng regex giống như trong câu trả lời Kotlin của @jrtapsell .

Hãy thử nó ở đây. ( falsenếu mạnh; truenếu không)

Giải trình:

s->               // Method with String parameter and boolean return-type
  s.matches(      //  Checks if the String matches the following regex:
    ".*           //   One or more characters
     [^aeiouy]    //   Followed by a consonant
     ([^aeiouy].* //   Followed by another consonant (+ any more characters)
      |$)")       //   Or the end of the String
                  // End of method (implicit / single-line return statement)

Vì vậy, về cơ bản nó sẽ kiểm tra xem chúng ta có thể tìm thấy hai phụ âm liền kề hay không, nếu Chuỗi kết thúc bằng một phụ âm.


Câu trả lời cũ ( 53 byte ):

s->s.matches("[aeiouy]*([a-z&&[^aeiouy]][aeiouy]+)*")

Hãy thử nó ở đây. ( truenếu mạnh; falsenếu không)

Sử dụng regex để xem Chuỗi đầu vào có khớp với 'strong'-regex không. Lưu ý rằng String#matchestrong Java sẽ tự động thêm ^...$để kiểm tra xem Chuỗi có hoàn toàn khớp với biểu thức chính quy không.

Giải trình":

 s->                   // Method with String parameter and boolean return-type
  s.matches(           //  Checks if the String matches the following regex:
    "[aeiouy]*         //   0 or more vowels
    ([a-z&&[^aeiouy]]  //     { A consonant,
     [aeiouy]+)        //       plus one or more vowels }
    *")                //    Repeated 0 or more times
                       // End of method (implicit / single-line return statement)

Một tìm kiếm thay vì khớp (như nhiều câu trả lời khác sử dụng) thực sự dài hơn trong Java:
70 byte :

s->java.util.regex.Pattern.compile("[^aeiouy]{2}").matcher(s+0).find()

Hãy thử nó ở đây. ( falsenếu mạnh; truenếu không)



0

SOGL V0.12 , 19 18 byte

æ"[^ŗy]”ŗ(ŗ|$)”øβ=

Hãy thử nó ở đây!

Giải trình:

æ                   push "aeiou"
 "[^ŗy]”            push "[^ŗy]" with ŗ replaced with pop
        ŗ(ŗ|$)”     push `ŗ(ŗ|$)` with ŗ replaced with pop
               øβ   replace in the input that regex with nothing
                 =  check for equality with the original input



0

Lua, 41 byte

return#(io.read()..0):match"[^aeiouy]+"<2

Đọc từ đầu vào tiêu chuẩn

Lua (loadopes'ed), 37 byte

return#((...)..0):match"[^aeiouy]+"<2

Đọc từ (các) tham số chức năng


Đầu vào là chữ thường

Xem nếu có một chuỗi có độ dài từ 2 trở lên, chỉ bao gồm không phải nguyên âm (phụ âm) hoặc nếu chuỗi kết thúc bằng một nguyên âm không

Trả về đúng / sai


0

C ++, 195 194 byte

-1 byte nhờ Zacharý

Viết hoa, trả về true nếu đầu vào là một từ mạnh, sai nếu không (C ++ có các quy tắc chuyển đổi ẩn int thành bool đơn giản, 0 => false, true ngược lại)

#include<string>
#define C(p)(v.find(e[p])==size_t(-1))
std::string v="AEIOUY";int s(std::string e){for(int i=0;i<e.size()-1;++i)if(e[i]>64&&e[i]<91&&C(i)&&C(i+1))return 0;return!C(e.size()-1);}

Mã để kiểm tra:

auto t = {
    "HATE",
    "LOVE",
    "POPULARIZE",
    "ACADEMY",
    "YOU",
    "MOUSE",
    "ACORN",
    "NUT",
    "AH",
    "STRONG",
    "FALSE",
    "PARAKEET"
};

for (auto&a : t) {
    std::cout << (s(a) ? "true" : "false") << '\n';
}

1
Bạn có thể loại bỏ khoảng trống giữa return!.
Zacharý

0

C, 107 byte

i,v,w,r,t;a(char*s){w=0;for(r=1;*s;s++){v=1;for(i=6;v&&i;)v=*s^" aeiouy"[i--];r=w&&v?0:r;w=v;}return r&~v;}

Trả về 1 cho từ mạnh và 0 cho từ yếu . Đã thử nghiệm với các từ được đưa ra trong bài chính.



0

PHP, 69 byte

preg_match("/([^AEIOUY][^AEIOUY]+|[^AEIOUY]$)/",$_SERVER['argv'][1]);

Trả về 1 là từ không mạnh.


Chào mừng đến với PPCG! Tôi tin rằng bạn có thể xóa khoảng trắng để cắt một số byte, cụ thể /", str-> /",str[1]))) return-> [1])))returnnhưng tôi không biết rõ về PHP nên tôi không chắc chắn.
Stephen

Vâng, ý kiến ​​hay! Ngoài ra, có thể giảm byte bằng cách giả sử rằng đầu vào luôn ở dạng chữ hoa.
Matias Villanueva

Ồ, và nếu regex là một công cụ regex tiêu chuẩn, bạn không thể làm gì [B-Z]?
Stephen

@Stephen [B-Z]bao gồm nguyên âm. [^AEIOUY]công trình, mặc dù.
LyricLy

Tôi cũng không biết PHP, nhưng có lẽ bạn có thể lưu nhiều byte hơn bằng cách trả lại kết quả từ kết quả khớp chính thức, thay vì gói nó trong một ifcâu lệnh.
LyricLy

0

CJam , 57 byte

q{"aeiouy"#W=}%_,:B{_A={_A_)\B(<{=!X&:X;}{0:X;;;}?}&}fA;X

Hãy thử trực tuyến!


Đọc đầu vào, chuyển đổi thành 1s cho phụ âm, 0s cho nguyên âm. Đối với mọi phụ âm, AND được xác định trước biến X (được xác định trước là 1) với giá trị của ký tự tiếp theo. Đầu ra X

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.