Sheffle tho vawols ureund!


42

Với một chuỗi đầu vào, đầu ra rằng chuỗi với tất cả các nguyên âm a, e, i, ouhoán đổi một cách ngẫu nhiên giữa mỗi khác.

Ví dụ: trong chuỗi this is a test, có 4 nguyên âm : [i, i, a, e]. [a, i, e, i]Do đó, việc xáo trộn hợp lệ các nguyên âm đó có thể mang lại đầu ra thas is e tist.

Về xáo trộn

Tất cả các xáo trộn sẽ có khả năng như nhau nếu chúng ta coi các nguyên âm bằng nhau là khác biệt . Đối với ví dụ trên, 24 xáo trộn đó là có thể:

[i 1 , i 2 , a, e] [i 1 , i 2 , e, a] [i 1 , a, i 2 , e] [i 1 , a, e, i 2 ]
[i 1 , e, i 2 , a] [i 1 , e, a, i 2 ] [i 2 , i 1 , a, e] [i 2 , i 1 , e, a]
[i 2 , a, i 1 , e] [i 2 , a, e, i 1 ] [i 2 , e, i 1 , a] [i 2 , e, a, i 1 ]
[a, i 1 , i 2 , e] [a, i 1 , e, i 2 ] [a, i 2 , i 1 , e] [a, i 2 , e, i 1 ]
[a, e, i 1 , i 2 ] [a, e, i 2 , i 1 ] [e, i 1 , i 2 , a] [e, i 1 , a, i 2 ]
[e, i 2 , i 1 , a] [e, i 2 , a, i 1 ] [e, a, i 1 , i 2 ] [e, a, i 2 , i 1 ]

Mỗi người nên có khả năng như nhau.

Bạn không thể thử xáo trộn ngẫu nhiên của toàn bộ chuỗi cho đến khi tìm thấy một nơi mà tất cả các nguyên âm ở đúng vị trí. Nói tóm lại, thời gian chạy mã của bạn sẽ không đổi nếu đầu vào không đổi.

Đầu vào và đầu ra

  • Bạn có thể cho rằng tất cả các chữ cái trong đầu vào sẽ là chữ thường hoặc chữ hoa. Bạn cũng có thể hỗ trợ vỏ hỗn hợp, mặc dù điều này sẽ không cung cấp cho bạn bất kỳ phần thưởng nào.

  • Đầu vào sẽ luôn bao gồm các ký tự ASCII có thể in được. Tất cả các ký tự ở đầu vào phải ở đầu ra, chỉ các nguyên âm phải được xáo trộn xung quanh và không có gì khác.

  • Đầu vào có thể trống. Không có gì đảm bảo rằng đầu vào sẽ chứa ít nhất một nguyên âm hoặc ít nhất một nguyên âm.

  • Bạn có thể lấy đầu vào từ STDIN, làm tham số hàm hoặc bất cứ thứ gì tương tự.

  • Bạn có thể in đầu ra STDOUT, trả lại từ một chức năng hoặc bất cứ thứ gì tương tự.

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

Dòng đầu tiên là đầu vào nhất định. Dòng thứ hai là một trong những đầu ra có thể.

<empty string>
<empty string>

a
a

cwm
cwm

the quick brown fox jumps over the lazy dog.
tho qeuck brewn fax jumps ovir the lozy dog.

abcdefghijklmnopqrstuvwxyz
abcdefghujklmnipqrstovwxyz

programming puzzles & code golf
pregromming pezzlos & coda gulf

fatalize
fitaleza

martin ender
mirten ander

Chấm điểm

Đây là , sa thoististwer en byte wons .


17
Bạn là người Anh / Mỹ và bạn thiếu ynguyên âm ..;)
Kevin Cruijssen

6
@KevinCruijssen Tôi không phải là người bản ngữ và tôi cũng sẽ coi đó ylà một nguyên âm, nhưng thử thách cuối cùng mà tôi nói ylà một nguyên âm tôi đã hỏi tại sao tôi chọn nó!
Gây tử vong vào

7
@KevinCruijssen, chữ cái không nguyên âm: âm thanh là.
Peter Taylor

6
+1 cho cwm. Giữ leo núi và / hoặc người xứ Wales còn sống;)
Beta Decay

2
@KevinCruijssen Đỗ không có một đồng w về vo w els mà không phải là thường được coi là như vậy.
corsiKa

Câu trả lời:


13

Thạch , 15 byte

f€“¡ẎṢɱ»ðœpżFẊ¥

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

Làm thế nào nó hoạt động

f€“¡ẎṢɱ»ðœpżFẊ¥  Main link. Argument: s (string)

  “¡ẎṢɱ»         Yield "aeuoi"; concatenate "a" with the dictionary word "euoi".
f€               Filter each character in s by presence in "aeuoi".
                 This yields A, an array of singleton and empty strings.
        ð        Begin a new, dyadic chain. Left argument: A. Right argument: s
         œp      Partition s at truthy values (singleton strings of vowels) in A.
            FẊ¥  Flatten and shuffle A. This yields a permutation of the vowels.
           ż     Zip the partition of consonants with the shuffled vowels.

Tại sao điều này có vẻ khá chậm so với các câu trả lời khác?
Gây tử vong vào

Jelly nhập SymPy và NumPy trước mọi thứ khác. Chương trình này và chương trình trống có thời gian thực hiện gần như nhau.
Dennis


5
@Dennis Vì tò mò, tại sao Jelly đã xây dựng từ trong từ điển? Nó lấy những từ điển này từ đâu?
Kevin Cruijssen

1
@KevinCruijssen Khi tôi thiết kế Jelly, đã có một vài ngôn ngữ chơi golf sử dụng shoco và chỉ cần sử dụng từ điển tiếng Anh có vẻ là một cách tốt để cải thiện ý tưởng đó. Tôi đã sử dụng tệp /usr/share/dict/wordstừ máy tính của mình và đưa nó vào trình thông dịch Jelly.
Dennis

17

R, 92 91

Chưa thể bình luận vì vậy tôi đang thêm câu trả lời của riêng mình mặc dù rất giống với câu trả lời @ Andreï Kostyrka (tin hay không nhưng tự mình đưa ra câu trả lời).

s=strsplit(readline(),"")[[1]];v=s%in%c("a","e","i","o","u");s[v]=sample(s[v]);cat(s,sep="")

Bị đánh cắp

s=strsplit(readline(),"")[[1]]    # Read input and store as a vector
v=s%in%c("a","e","i","o","u")     # Return TRUE/FALSE vector if vowel
s[v]=sample(s[v])                 # Replace vector if TRUE with a random permutation of vowels
cat(s,sep="")                     # Print concatenated vector

Đã lưu một byte nhờ @Vlo

s=strsplit(readline(),"")[[1]];s[v]=sample(s[v<-s%in%c("a","e","i","o","u")]);cat(s,sep="")

5
Thành thật mà nói, tôi không thể tin được. Đùa thôi. Thủ thuật hay để tiết kiệm một số byte!
Andreï Kostyrka

Thành thật mà nói, tôi không đánh cắp ý tưởng của bạn để đánh golf câu trả lời của tôi hơn nữa.
Andreï Kostyrka

3
Hehe, phải lấy cho họ những lời
khen ngợi

Lưu một byte với gán trực tiếp 91 bytes=strsplit(readline(),"")[[1]];s[v]=sample(s[v<-s%in%c("a","e","i","o","u")]);cat(s,sep="")
Vlo

Lưu một byte khác bằng cách sử dụng el()thay vì [[1]].
Andreï Kostyrka

11

R, 99 98 89 byte

x=el(strsplit(readline(),""))
z=grepl("[aeiou]",x)
x[z]=x[sample(which(z))]
cat(x,sep="")

Có vẻ là giải pháp đầu tiên có thể đọc được của con người! Cảm ơn Giuseppe vì đã tiết kiệm 9 byte!

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

tho qaeck bruwn fux jemps over tho lozy dig.
progremmang pozzlos & cide gulf

Có vẻ như không có cách nào để thực hiện một phép gán biến nội bộ (bên trong, như, cat), và một lần nữa một số người sẽ chứng minh rằng tôi sai ...


2
letters[c(1,5,9,15,21)]dài hơn 1 byte và OEIS A161536 và A215721 dường như chẳng có ích gì.
Andreï Kostyrka

Sẽ không z=grepl("[aeiou]",x)ngắn hơn?
Giuseppe

@Giuseppe Bạn đã làm lại! Cảm ơn.
Andreï Kostyrka

10

CJam, 23 byte

lee_{"aeiou"&},_mrerWf=

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

Giải trình

l            e# Read input, e.g. "foobar".
ee           e# Enumerate, e.g. [[0 'f] [1 'o] [2 'o] [3 'b] [4 'a] [5 'r]].
_            e# Duplicate.
{"aeiou"&},  e# Keep those which have a non-empty intersection with this string
             e# of vowels, i.e. those where the enumerated character is a vowel.
             e# E.g. [[1 'o] [2 'o] [4 'a]].
_            e# Duplicate.
mr           e# Shuffle the copy. E.g. [[2 'o] [4 'a] [1 'o]].
er           e# Transliteration. Replaces elements from the sorted copy with
             e# the corresponding element in the shuffled copy in the original list.
             e# [[0 'f] [2 'o] [4 'a] [3 'b] [1 'o] [5 'r]].
Wf=          e# Get the last element of each pair, e.g. "foabor".

5

05AB1E , 17 byte

žMÃ.r`¹vžMyå_iy}?

Giải trình

žMÃ                # get all vowels from input
   .r`             # randomize them and place on stack
      ¹v           # for each in input
        žMyå_i }   # if it is not a vowel
              y    # push it on stack
                ?  # print top of stack

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


5

Python 3, 109 byte

Chỉ hỗ trợ nguyên âm chữ thường.

Cảm ơn @Alissa đã lưu thêm một byte.

import re,random
def f(s):r='[aeiou]';a=re.findall(r,s);random.shuffle(a);return re.sub(r,lambda m:a.pop(),s)

Nghĩa là nó!


Sẽ không ngắn hơn nếu đó là một hàm lấy chuỗi và trả về chuỗi đó bằng các nguyên âm được xáo trộn?
Alissa

@Alissa Cảm ơn, nó đã lưu một byte! : D
Beta Decay

không chắc nó có ngắn hơn không, nhưng bạn có thể a.pop(random.randrange(0,len(a)))thay vì xáo trộn một
Alissa

4

TSQL, 275 byte

Chơi gôn

DECLARE @ VARCHAR(99)='the quick brown fox jumps over the lazy dog.'

;WITH c as(SELECT LEFT(@,0)x,0i UNION ALL SELECT LEFT(substring(@,i+1,1),1),i+1FROM c
WHERE i<LEN(@)),d as(SELECT *,rank()over(order by newid())a,row_number()over(order by 1/0)b
FROM c WHERE x IN('a','e','i','o','u'))SELECT @=STUFF(@,d.i,1,e.x)FROM d,d e
WHERE d.a=e.b PRINT @

Ung dung:

DECLARE @ VARCHAR(max)='the quick brown fox jumps over the lazy dog.'

;WITH c as
(
  SELECT LEFT(@,0)x,0i
  UNION ALL
  SELECT LEFT(substring(@,i+1,1),1),i+1
  FROM c
  WHERE i<LEN(@)
),d as
(
  SELECT 
    *,
    rank()over(order by newid())a,
    row_number()over(order by 1/0)b
  FROM c
  WHERE x IN('a','e','i','o','u')
)
SELECT @=STUFF(@,d.i,1,e.x)FROM d,d e
WHERE d.a=e.b
-- next row will be necessary in order to handle texts longer than 99 bytes
-- not included in the golfed version, also using varchar(max) instead of varchar(99)
OPTION(MAXRECURSION 0) 

PRINT @

Vĩ cầm


3

Perl, 38 byte

Bao gồm +1 cho -p

Chạy với câu trên STDIN

vawols.pl <<< "programming puzzles & code golf"

vawols.pl:

#!/usr/bin/perl -p
@Q=/[aeiou]/g;s//splice@Q,rand@Q,1/eg

3

Java 7, 243 241 byte

import java.util.*;String c(char[]z){List l=new ArrayList();char i,c;for(i=0;i<z.length;i++)if("aeiou".indexOf(c=z[i])>=0){l.add(c);z[i]=0;}Collections.shuffle(l);String r="";for(i=0;i<z.length;i++)r+=z[i]<1?(char)l.remove(0):z[i];return r;}

Vâng, điều này có thể có thể được chơi golf khá nhiều, nhưng Java không có bất kỳ tiện ích tích hợp tiện dụng nào cho afaik này .. Ngoài ra, tôi cũng quên mất biến thể mảng mã hóa cho Collections.shuffle..

Các trường hợp bất ngờ & thử nghiệm:

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

import java.util.*;
class M{
  static String c(char[] z){
    List l = new ArrayList();
    char i,
         c;
    for(i = 0; i < z.length; i++){
      if("aeiou".indexOf(c = z[i]) >= 0){
        l.add(c);
        z[i] = 0;
      }
    }
    Collections.shuffle(l);
    String r = "";
    for(i = 0; i < z.length; i++){
      r += z[i] < 1
               ? (char)l.remove(0)
               : z[i];
    }
    return r;
  }

  public static void main(String[] a){
    System.out.println(c("".toCharArray()));
    System.out.println(c("a".toCharArray()));
    System.out.println(c("cwm".toCharArray()));
    System.out.println(c("the quick brown fox jumps over the lazy dog.".toCharArray()));
    System.out.println(c("abcdefghijklmnopqrstuvwxyz".toCharArray()));
    System.out.println(c("programming puzzles & code golf".toCharArray()));
    System.out.println(c("fatalize".toCharArray()));
    System.out.println(c("martin ender".toCharArray()));
  }
}

Sản lượng có thể:

a
cwm
tha queck brown fox jumps evor tho lezy dig.
ebcdifghujklmnopqrstavwxyz
prigrommeng puzzlos & cade golf
fatelazi
mertan inder

1
Làm thế nào về việc tái sử dụng itrong vòng lặp thứ hai?
Frozn

Tôi đã nghĩ "tại sao anh ấy không đi cùng char [] thay vì Danh sách", vì vậy tôi đã bắt đầu, nhưng sự thiếu vắng Arrays.shuffleđã ngăn tôi lại ngay tại đó ...
Olivier Grégoire

Cạo 6 ký tự với một số điều chỉnh nhỏ:import java.util.*;String c(char[]z){List l=new ArrayList();int i=0,j=z.length;for(;i<j;i++)if("aeiou".indexOf(z[i])>=0){l.add(z[i]);z[i]=0;}Collections.shuffle(l);String r="";for(i=0;i<j;i++)r+=z[i]<1?(char)l.remove(0):z[i];return r;}
durron597


3

Ruby 45 + 1 = 46 byte

+1 byte cho -pcờ

a=$_.scan(e=/[aeiou]/).shuffle
gsub(e){a.pop}

3

Brachylog , 39 byte

@eI:1aToS,I:2f@~:LcS,Tc
.'~e@V;
e.~e@V,

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

Giải trình

  • Vị ngữ chính:

    @eI        I is the list of chars of the input.
    :1aT       T is I where all vowels are replaced with free variables.
    oS,        S is T sorted (all free variables come first).
    I:2f       Find all vowels in I.
    @~         Shuffle them.
    :LcS,      This shuffle concatenated with L (whatever it may be) results in S.
                 This will unify the free variables in S with the shuffled vowels.
    Tc         Output is the concatenation of elements of T.
    
  • Vị ngữ 1:

    .          Input = Output…
    '~e@V      …provided that it is not a vowel.
    ;          Otherwise Output is a free variable.
    
  • Vị ngữ 2:

    e.         Output is an element of the input…
    ~e@V,      … and it is a vowel.
    

3

Javascript (ES6), 78 76 byte

s=>s.replace(r=/[aeiou]/g,_=>l.pop(),l=s.match(r).sort(_=>Math.random()-.5))

Đã lưu 2 byte nhờ vào apsillers

Phiên bản thay thế được đề xuất bởi apsillers (76 byte)

s=>s.replace(r=/[aeiou]/g,[].pop.bind(s.match(r).sort(_=>Math.random()-.5)))

Kiểm tra

let f =
s=>s.replace(r=/[aeiou]/g,_=>l.pop(),l=s.match(r).sort(_=>Math.random()-.5))

console.log(f("the quick brown fox jumps over the lazy dog."))


1
Không phải là một sự cải thiện (chính xác cùng một số điểm), nhưng tôi đã tìm thấy một sự xấu xí thú vị: bỏ l=...hoàn toàn và sử dụng hàm bị ràng buộc [].pop.bind(s.match(r).sort(_=>Math.random()-.5)))làm đối số thứ hai replace(thay vì một hàm mũi tên). Có thể có một cải tiến được tìm thấy trên con đường đó, nhưng tôi chưa tìm thấy một cải tiến nào. Nếu bạn đã sử dụng ngôn ngữ superset JS có toán tử liên kết ::, tôi nghĩ bạn có thể làm được (s.match(r).sort(_=>Math.random()-.5)))::pop.
apsillers

3

MATL , 15 byte

tt11Y2m)tnZr7M(

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

Giải trình

tt      % Take input string implicitly. Duplicate twice
11Y2    % Predefined string: 'aeiou'
m       % Logical index that contains true for chars of the input that are vowels
)       % Get those chars from the input string. Gives a substring formed by the
        % vowels in their input order
tnZr    % Random permutation of that substring. This is done via random sampling
        % of that many elements without replacement
7M      % Push logical index of vowel positions again
(       % Assign the shuffled vowels into the input string. Display implicitly

3

Japt v2.0a0, 14 13 byte

ō²f\v
NÌr\v@o

Thử nó


Giải trình

           :Implicit input of string U.
ö²         :Generate a random permutation of U.
  f\v      :Get all the vowels as an array.
\n         :Assign that array to U.
NÌ         :Get the last element in the array of inputs (i.e., the original value of U)
  r\v      :Replace each vowel.
     @o    :Pop the last element from the array assigned to U above.

2

Bình thường, 26 byte

J"[aeiou]"s.i:QJ3.Sf}TPtJQ

Một chương trình lấy đầu vào của một chuỗi được trích dẫn và in chuỗi xáo trộn.

Dùng thử trực tuyến

Làm thế nào nó hoạt động

J"[aeiou]"s.i:QJ3.Sf}TPtJQ  Program. Input: Q
J"[aeiou]"                  J="[aeiou]"
             :QJ3           Split Q on matches of regex J, removing vowels
                      PtJ   J[1:-1], yielding "aeiou"
                   f}T   Q  Filter Q on presence in above, yielding vowels
                 .S         Randomly shuffle vowels
           .i               Interleave non-vowel and vowel parts
          s                 Concatenate and implicitly print

2

PHP, 144 129 byte

Sử dụng đầu vào chữ thường

$r=Aaeiou;$v=str_shuffle(preg_replace("#[^$r]+#",'',$a=$argv[1]));for(;$i<strlen($a);)echo strpos($r,$a[$i++])?$v[$j++]:$a[$i-1];

Giải trình:

$r="aeiou"; // set vowels

preg_replace("#[^$r]+#",'',$argv[1]) // find all vowels in input

$v=str_shuffle() // shuffle them

for(;$i<strlen($a);) // run through the text

strpos($r,$a[$i++])?$v[$j++]:$a[$i-1]; // if it's a vowel print the j-th shuffled vowel else print original text

2

Trên thực tế, 24 byte

;"aeiou";╗@s@`╜íu`░╚@♀+Σ

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

Giải trình:

;"aeiou";╗@s@`╜íu`░╚@♀+Σ
;                         dupe input
 "aeiou";╗                push vowels, store a copy in reg0
          @s              split one copy of input on vowels
            @`╜íu`░       take characters from other copy of input where
              ╜íu           the character is a vowel (1-based index of character in vowel string is non-zero)
                   ╚      shuffle the vowels
                    @♀+   interleave and concatenate pairs of strings
                       Σ  concatenate the strings

2

Bash, 75 byte

paste -d '' <(tr aeoiu \\n<<<$1) <(grep -o \[aeiou]<<<$1|shuf)|paste -sd ''

Lấy chuỗi làm đối số và in kết quả ra thiết bị xuất chuẩn.

Ví dụ

for x in "" "a" "cwm" \
         "the quick brown fox jumps over the lazy dog." \
         "abcdefghijklmnopqrstuvwxyz" \
         "programming puzzles & code golf" \
         "fatalize" "martin ender"; do
  echo "$x";. sheffle.sh "$x"; echo
done

in

<blank line>
<blank line>

a
a

cwm
cwm

the quick brown fox jumps over the lazy dog.
tho quuck brown fix jamps ever the lozy dog.

abcdefghijklmnopqrstuvwxyz
ibcdefghajklmnopqrstuvwxyz

programming puzzles & code golf
progremmong pazzlus & cedo gilf

fatalize
fetilaza

martin ender
mertan endir

2

Bash, 89

Giả sử tất cả các đầu vào là chữ thường.

a=`tee z|grep -o [aeiou]`
[ -n "$a" ]&&tr `tr -d \ <<<$a` `shuf -e $a|tr -d '
'`<z||cat z

2

PowerShell v3 +, 155 99 byte

param([char[]]$n)$a=$n|?{$_-match'[aeiou]'}|sort{random};-join($n|%{if($_-in$a){$a[$i++]}else{$_}})

Đạo cụ lớn cho @ Ben Owen cho sân golf 56 byte

Đưa đầu vào $n, mong đợi tất cả chữ thường, ngay lập tức biến nó thành một char-array.

Chúng ống đó vào một Where-Objectkhoản để rút ra khỏi những yếu tố mà -matchmột nguyên âm, ống họ Sort-Objectvới {Get-Random}như cơ chế phân loại. Gọi Get-Randommà không có vòng loại sẽ trả về một số nguyên giữa 0[int32]::MaxValue- tức là gán trọng số ngẫu nhiên cho mỗi phần tử khi đang bay. Chúng tôi lưu trữ các nguyên âm ngẫu nhiên vào $a.

Cuối cùng, chúng tôi lặp qua $n. Đối với mỗi phần tử, |%{...}nếu ký tự hiện tại ở đâu đó -in $a, chúng tôi xuất phần tử tiếp theo vào $a, tăng sau $icho lần tiếp theo. Nếu không, chúng tôi xuất ký tự hiện tại. Đó là tất cả được gói gọn trong parens và -joined với nhau thành một chuỗi. Chuỗi đó được để lại trên đường ống và đầu ra ẩn ở kết luận chương trình.

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

PS C:\Tools\Scripts\golfing> 'a','cwm','the quick brown fox jumps over the lazy dog.','abcdefghijklmnopqrstuvwxyz','programming puzzles & code golf','fatalize','martin ender'|%{.\vawols.ps1 $_}
a
cwm
thu qaeck brown fix jomps ovor thu lezy deg.
abcdofghejklmnupqrstivwxyz
prugrammong pizzles & code golf
fitaleza
mertin endar

Bạn có thể lưu rất nhiều byte ở đây bằng cách lặp qua $ncác ký tự và khớp trên mỗi nguyên âm để xuất ra char-array của nguyên âm thay thế. Một cái gì đó như:$a=[char[]]$n|?{$_-match'[aeiou]'}|sort{random}
Ben Owen

@BenOwen Thánh dang, vâng. Cảm ơn vì golf 56 byte. Đối với cuộc sống của tôi, tôi không thể tìm ra cách tốt hơn để xây dựng $a.
admBorkBork

2

Python 3, 106 byte

Chữ thường

import re,random
def f(s):s=re.split('([aeiou])',s);v=s[1::2];random.shuffle(v);s[1::2]=v;return''.join(s)

1

PHP> = 5.3 , 139 136 byte (và không có lỗi nào bị ném)

array_map(function($a,$b){echo$a.$b;},preg_split("/[aeiou]/",$s=$argv[1]),str_split(str_shuffle(implode(preg_split("/[^aeiou]/",$s)))));

1

K (oK) , 29 byte

Giải pháp:

{x[a:&x in"aeiou"]:x@(-#a)?a}

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

Ví dụ:

"pregrommeng pizzlas & codo gulf"
{x[a:&x in"aeiou"]:x@(-#a)?a}"programming puzzles & code golf"
"pregremmong puzzlos & coda gilf"
{x[a:&x in"aeiou"]:x@(-#a)?a}"programming puzzles & code golf"
"pregrommeng pazzlos & cidu golf"

Giải trình:

Tìm vị trí của các nguyên âm và thay thế bằng các nguyên âm được vẽ theo thứ tự ngẫu nhiên.

{x[a:&x in"aeiou"]:x@(-#a)?a} / the solution
{                           } / anonymous function with input x
 x[              ]            / index into x at these indices
      x in"aeiou"             / is character a vowel
     &                        / indices where true
   a:                         / assign to add
                  :           / assign
                          ?a  / draw randomly from a
                     (   )    / do this together
                       #a     / count length of a
                      -       / negate (draws from list, no duplication)
                   x@         / apply these indices to input


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.