Belirgin bir kelime oluşturun


16

Zorluk basit:

sözcük oluşturmak.

Özellikler:

  • Kelime belirgin olmalıdır.
    • Bu, "ünsüz ve sesli harf arasında geçiş yapma" olarak tanımlanır.
    • Bir ünsüz aşağıdaki harflerden biridir: bcdfghjklmnpqrstvwxz
    • Sesli harf aşağıdaki harflerden biridir: aeiouy
  • Word rastgele oluşturulmalıdır.
  • Kelimeler her ünsüz ve sesli harfleri içerebilmelidir. (Sadece bcdfünsüzler ve aeiünlüler için kullanamazsınız .)
  • Word 10 harf içermelidir.
  • En kısa kod (karakter sayısında) kazanır.


7
İle bu xkcd şerit akılda program echo buxitiwymuteknik özelliklerine uygundur. Sizi temin ederim, kelimeyi rastgele oluşturdum: P
AardvarkSoup

1
@AardvarkSoup "Kelimeler her ünsüz ve sesli harf içermelidir"
Kapı Tokmağı

1
@Kartik bağlama bağlıdır, 'evet' bir ünsüzdür, 'neden' bir sesli harftir, ancak bu belirgin bir kelimeyi ünlüler ve ünsüzler arasında dönüşümlü olarak tanımlamayı imkansız hale getirir, örn. yyyyyyyy geçerli bir kelime olurdu.
CJStuart

1
Aslında bir süre önce Scratch'da bir jeneratör yaptım. ySesli harf olarak ne zaman kullanabileceğiniz , kullanabileceğiniz qve veyaxngea
42'de Meyve Esolanging

Yanıtlar:



8

Ruby: 56 karakter

([v=%w(a e i o u y),[*?a..?z]-v]*5).map{|a|$><<a.sample}

Örnek çıktılar:

  • itopytojog
  • umapujojim
  • ipagodusas
  • yfoqinifyw
  • ebylipodiz

1
'aeiouy'.charsbir karakter daha kısa olurdu.
Howard

@ O zaman çıkarma operatörü yükseldiTypeError: can't convert Enumerator into Array
John Dvorak

@JanDvorak Üzgünüm, bu hile için Ruby 2.0'a ihtiyacınız olduğunu belirtmeyi unuttum.
Howard

7

Python, 81

from random import*
print''.join(map(choice,["bcdfghjklmnpqrstvwxz","aeiouy"]*5))

Onları telaffuz etmede iyi şanslar.


Onlar aslında telaffuz etmek oldukça kolay, örneğin ilk kelime "viketuziwo" oldu:P
Kapı Tokmağı

@ Kapı kolu belki sadece benim şansım. "Qijepyjyga" gibi "kelimeler" almaya devam ediyorum. Bilgisayarımın onları telafi etme girişimleri bunun için telafi ediyor :)
grc

3
Makinemde çok eğlendim python grc.py | say. Fikir için teşekkürler.
Kaya

7

COBOL, 255

Şu anda COBOL öğreniyorum. Bu soruyu biraz pratik olarak kullandık. Golf yapmaya çalıştı.

Önde gelen boşluk olmadan 255 ve ile 286 bayt.

Değer için, bu VS2012 için Microfocus COBOL'de çalışıyor ve başka bir yerde çalışıp çalışmadığına dair hiçbir fikrim yok.

       1 l pic 99 1 s pic x(26) value'aeiouybcdfghjklmnpqrstvwxz' 1 r
       pic 99 1 v pic 9 1 q pic 99. accept q perform test after varying
       l from 1 by 1 until l>9 compute v=function mod(l,2) compute r=1+
       function random(q*l)*5+v*15+v*5 display s(r:1)end-perform exit


6

JavaScript, 74

for(a=b=[];a++-5;)b+="bcdfghjklmnpqrstvwxz"[c=new Date*a%20]+"aeiouy"[c%6]

Tüm kombinasyonları oluşturmaz, ancak tüm ünsüzlerin ve sesli harflerin ortaya çıktığını düşünüyorum.

JavaScript, 79

for(a=b=[];a--+5;)b+="bcdfghjklmnpqrstvwxz"[c=Math.random()*20^0]+"aeiouy"[c%6]

Daha fazla "rastgele" versiyonu.


Ne ^0için?
Alpha

1
@ Alfa Math.randombir şamandıra veriyor, bir tamsayıya ihtiyacımız var. ^0sayıyı kısaltır
kopya

Akıllı numara. Daha ^önce JavaScript'te operatörü görmedim ve bir şamandırayı kesmek için kullandığını daha az duydum. Teşekkürler!
Alfa

@copy kullanımı gibi^
Math chiller

4

Yakut: 70 66 karakter

10.times{|i|$><<["aeiouy"*4,"bcdfghjklmnpqrstvwxz"][i%2][rand 20]}

Örnek çalışma:

bash-4.1$ ruby -e '10.times{|i|$><<["aeiouy"*4,"bcdfghjklmnpqrstvwxz"][i%2][rand 20]}'
izogoreroz

bash-4.1$ ruby -e '10.times{|i|$><<["aeiouy"*4,"bcdfghjklmnpqrstvwxz"][i%2][rand 20]}'
onewijolen

bash-4.1$ ruby -e '10.times{|i|$><<["aeiouy"*4,"bcdfghjklmnpqrstvwxz"][i%2][rand 20]}'
amilyfilil

10.timesBir karakter daha az için kullanabilirsiniz .
Howard

1
Ayrıca soru, her harfin aynı olasılığa sahip olmasını gerektirmez. *10-> *4, atla *3, rand 60-> rand 20ve 3 karakter kaydettin.
Howard

Kurallarý iyi yakaladýn @Howard. Teşekkür ederim.
manatwork

4

R: 105 karakter

a=c(1,5,9,15,21,25)
l=letters
s=sample
cat(apply(cbind(s(l[-a],5),s(l[a],5)),1,paste,collapse=""),sep="")

4

J (51)

,|:>(<"1[5?6 20){&.>'aeiouy';'bcdfghjklmnpqrstvwxz'

4

İşleme, 100 99 93 87

int i=10;while(i-->0)"aeiouybcdfghjklmnpqrstvwxz".charAt((int)random(i%2*6,6+i%2*i*2));

Soruyu daha yakından inceledikten sonra herhangi bir çıktı gerektirmediğini görüyorum. Bunu buna göre ayarladım.


3

Hedef-C, 129

main(){int i=10;while(i-->0)printf("%c",[(i%2==0)?@"aeiouy":@"bcdfghjklmnpqrstvwxz"characterAtIndex:arc4random()%(6+(i%2)*14)]);}

Daniero yardımıyla

(Ben eğilimi operatöre kullanmayı seviyorum (->)


3

Java AKA şimdiye kadar yaratılmış en ayrıntılı dil, 176 Doorknob, Daniero ve Peter Taylor'ın yardımıyla (teşekkürler çocuklar!)

class w{public static void main(String[]a){int i=11;while(--i>0)System.out.print((i%2==0?"aeiouy":"bcdfghjklmnpqrstvwxz").charAt(new java.util.Random().nextInt(6+(i%2)*14)));}}

Ungolfed:

    class w {

        public static void main(String[] a) {
            int i = 11;
            while (--i > 0) {
                System.out.print((i % 2 == 0 ? "aeiouy" : "bcdfghjklmnpqrstvwxz").charAt(new java.util.Random().nextInt(6 + (i % 2) * 14)));
            }
     }

}


1
Önerilen iyileştirmeler: Değişim String a[]için String[]a(1 karakterini), değişim w W = new w();için w W=new w();(-2 karakter)
Doorknob

Öneriler: Kelimenin her zaman bir ünsüz (veya wovel) ile başlamasına izin verin; sorudan bahsetmediği zaman bunu randomize etmeye gerek yok! Yani, boole'i ​​atlayın fve i%2bunun yerine kullanın. Ayrıca, fordöngü kısaltılabilir ve her iki dizeyi koşullu operatörün içine koyabilirsiniz (ayrıca burada parenlere gerek yoktur) ve charAtdışarıda kullanabilirsiniz. İşte her şey, 195import java.util.*;class w{public static void main(String[]a){Random r=new Random();for(int i=0;++i<11;)System.out.print((i%2>0?"bcdfghjklmnpqrstvwxz":"aeiouy").charAt(r.nextInt(6+(i%2)*14)));}}
CHARS

2
“Java AKA şimdiye kadar yaratılmış en ayrıntılı dil” - Shakespeare'i denediniz mi? ;-)
manatwork

1
@manatwork, içe aktarma işlemini yalnızca bir yerde kullanmaya başladıktan sonra kaldırmayı unutmayın.
Peter Taylor

1
@manatwork belki lisp seviyoruz ?? Tamam, üzgünüm, işten eve geldiğimde bu parantezleri çıkaracağım
jsedano

3

Javascript, 85

for(r=Math.random,s="",i=5;i--;)s+="bcdfghjklmnpqrstvwxz"[20*r()|0]+"aeiouy"[6*r()|0]

Konsoldan çalıştırılırsa çıkış gösterilir. Açık görüntü alert(s), diğer JS çözümlerinden daha kısa olan 8 karakter ekleyecektir .

Teşekkürler C5H8NNaO4 ve Howard!


Güzel olan, son karakteri kaldırarak bir karakteri kaydedin ';'
C5H8NNaO4

1
Bunun yerine 4 karakter kaydeden ~~(###)yazabilirsiniz ###|0.
Howard

3

JavaScript, 135 122 96 86 karakter

s='';c=5;r=Math.random;while(c--)s+='bcdfghjklmnpqrstvwxz'[r()*20|0]+'aeiouy'[r()*6|0]


3

Unix araçları: 73 bayt

Ve garanti edilmeyen çalışma süresi :)

</dev/urandom grep -ao '[aeiouy][bcdfghjklmnpqrstvwxz]'|head -5|paste -sd ''

Tek sorun üretilen dize her seferinde bir "sesli harf" ile başlayacaktır.

(düzenleme: değişmiş ' 'için ''macunun args) (başka düzenleme: grep seçenekler arasından kaldırılan -P, sayesinde manatwork )


grepParametrelerin etrafında bir şey ince ayarlanmış olabilir . “E ap ag ak” aldım.
manatwork

Hmm ... garip. Böyle bir şeyim yok. Bence -ayeterli olur.
pgy

1
Testim bunun -Polduğunu gösteriyor . Görünüşe bakılırsa, insan deneysel durumu hakkında bir sebeple uyarıyor. ( grep2.16) Ama yine de, onsuz iyi çalışıyor -P.
manatwork

Haklısın teşekkür ederim, bunu düşünmedim. -Pİlk etapta neden kullandığımı bile bilmiyorum . Cevabımı düzenleyeceğim.
pgy

1
Bu arada, tr -d \\nhatları birleştirmek için daha kısadır.
manatwork

3

Pyth, 26 karakter

J-G"aeiouy"VT=k+kOJ=J-GJ;k

Buradaki çevrimiçi derleyicide deneyebilirsiniz.

Birisi çok benzer bir meydan okuma yayınladı ama bir çözüm yaptıktan sonra kapatıldı. Farkında değildim, ama bu soru aslında Pyth'in yaratılmasından önce. Her neyse, işte döküm:

J                             Set string J equal to:
  G                            the entire alphabet (lowercase, in order)
 - "aeiouy"                    minus the vowels
           VT                 For n in range(1, 10):
             =k                   Set string k to:
                k                  k (defaults to empty string)
               + OJ                plus a random character from J
                   =J             Set J to:
                      G            the entire alphabet
                     - J           minus J
                        ;     End of loop
                         k    print k

Döngü her çalıştırıldığında, J ünsüzlerin listesi olmaktan ünlüler listesine geçer. Bu şekilde her seferinde J'den rastgele bir harf seçebiliriz.
Döngüde J başlatmak veya döngüdeki açık atamaları kaldırmak için bir yol olabilir, ama ben de henüz başarılı olmadım.


1
Eski soruları çarpmak genellikle iyi kabul edilir. Ancak, sorudan daha yeni bir dil kullandığınızda (2014'te Pyth'i oluşturdum) cevabınızda bunu not etmelisiniz.
isaacg

Bunu benim için temizlediğin için teşekkürler. Bu sorudan sonra Pyth'in yaratıldığını fark etmedim ve bunu cevaba ekledim.
Mike Bufardeci

3

APL 30 26

,('EIOUY'∪⎕A)[6(|,+)⍪5?20]

Açıklama, aşağıdaki geçmiş sürüme çok benzer, sadece çözümü golf için biraz yeniden sıraladı.

Not: ⎕IO 0 olarak ayarlanmıştır


('EIOUY'∪⎕A)[,6(|,(⍪+))5?20]

Açıklama:

'EIOUY'∪⎕A    puts vowels in front of all letters.
5?20            for the indexes we start choosing 5 random numbers between 0 and 19
6(|,(⍪+))        then we sum 6 and the random numbers, convert to 5x1 matrix (⍪), add a column before this one containing 6 modulo the random numbers. 
                [[[ this one can be rewritten as: (6|n) , ⍪(6+n)  for easier understanding]]]
,6(|,(⍪+))5?20  the leading comma just converts the matrix to a vector, mixing the vowel and consonants indexes.

Tryapl.org


1
('AEIOUY'∪⎕A) ≡ (∪'AEIOUY',⎕A)ama bir bayt daha kısa.
lstefano

1
⎕ABaşka bir bayt tasarrufu için 'A' ,('EIOUY'∪⎕A)[6(|,+)⍪5?20]
erteleme

Güzel! 26. Teşekkürler
Moris Zucca

2

PHP 79 bayt

<?for($c=bcdfghjklmnpqrstvwxz,$v=aeiouy;5>$i++;)echo$c[rand()%20],$v[rand()%6];

Oldukça özlü.


2

C: 101

main(){int x=5;while(x-->0){putchar("bcdfghjklmnpqrstvwxyz"[rand()%21]);putchar("aeiou"[rand()%5]);}}

2

JavaScript, 104 87

a="";for(e=10;e--;)a+=(b=e&1?"bcdfghjklmnpqrstvwxz":"aeiouy")[0|Math.random()*b.length]

bir sürü basit gereksiz şeyleri golf etti, hala copys kadar hoş değil

Oh, ve bu sadece golf sırasında karşı çıktı: "dydudelidu"

Şimdi bir kerede 2 karakteri kullanarak birini denedim. Görünüşe göre, copys'in ikincisi ile neredeyse aynı, bu yüzden 79'da da sayamam. a="";for(e=5;e--;)a+="bcdfghjklmnpqrstvwxz"[m=0|20*Math.random()]+"aeiouy"[m%6]


2

Brachylog , 9 bayt

Ḍ;Ẉṣᵐzh₅c

Çevrimiçi deneyin!

Çıktıyı, çıktı değişkeni yoluyla bir harf listesi olarak verir.

   ṣ         Randomly shuffle
 ;  ᵐ        both
Ḍ            the consonants without y
  Ẉ          and the vowels with y,
     z       zip them into pairs,
      h₅     take the first five pairs,
             and output
        c    their concatenation.

1

F # , 166 karakter

open System;String.Join("",(Random(),"aeiouybcdfghjklmnpqrstvwxz")|>(fun(r,s)->[0..5]|>List.collect(fun t->[s.Substring(6+r.Next()%20,1);s.Substring(r.Next()%6,1)])))

1

K, 40 bayt

,/+5?/:("bcdfghjklmnpqrstvwxz";"aeiouy")

5?"abc" verilen dizeden 5 rastgele harf oluşturur.

5?/: sağdaki dizelerin her birinden 5 rastgele harf üreterek iki liste oluşturur.

+ bize ilk listeden rastgele bir karakter ve sonra ikinci listeden bir rastgele karakter içeren tuples listesini veren bu iki listeyi aktarır.

,/ "pus" - tüm bu tuplleri sırayla birleştirin.

K5, alfabeyi daha akıllıca oluşturarak ve sonra ^ünlüleri kaldırmak için "hariç" ( ) kullanarak 33 baytta bunu yapabilir , ancak K5 bu soruda yasal olamayacak kadar yeni:

,/+5?/:((`c$97+!26)^v;v:"aeiouy")

1

R, 83 bayt

cat(outer((l<-letters)[a<-c(1,5,9,15,21,25)],l[-a],paste0)[sample(1:120,5)],sep="")

Bir matristeki tüm ünlü sesli harf-ünsüz dizileri oluşturun, sonra rastgele 5 örnek, 10 harfli bir kelime verir.



0

Jöle , 13 bayt

Øy,ØYẊ€Zs5ḢŒl

Açıklama:

Øy,ØYẊ€Zs5ḢŒl
Øy,ØY         Makes a list of two lists of characters: [[list-of-vowels-with-y], [list-of-consonants-without-y]]
     Ẋ€       Shuffle €ach.
       Z      Zip those two lists together. [[random-vowel, random-consonant],...]
        s5    Split them into chunks of five (because each pair contains two letters, this splits them into chunks of 10 letters)
          Ḣ   Take the list of 5 pairs.
           Œl Make each of the characters in it lowercase
              Implicit concatenation and print.

Çevrimiçi deneyin!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.