Odunsu kelimeler, teneke gibi kelimeler


35

Not: Bu soruda bazı kaba kelimeler var.

Bu klasik Monty Python taslağında ortaya konan üstü kapalı bir bilmece var (ayrıca betiği çevrimiçi olarak da hazırlayabilirsiniz ).

Çeşitli ifadeler 'odunsu' veya 'kalaylı', biri de 'PVC' olarak tanımlanmaktadır.

Bir cümle verildiğinde, aşağıdaki listelere göre türüyle yanıt verin:

woody:

gone
sausage
seemly
prodding
vacuum
bound
vole
caribou
intercourse
pert
thighs
botty
erogenous zone
ocelot
wasp
yowling

tinny:

litter bin
newspaper
antelope
recidivist
tit
simpkins

PVC:

leap

kurallar

  • Giriş yukarıdaki listelerinin birine ait, çıkış olmalıdır woody, tinnyya da PVCbuna göre.
  • Tüm girişler küçük harflerdir.
  • Yukarıda listelenmeyen ifadeler için herhangi bir davranış kabul edilebilir.
  • Cevaptaki en az bayt kazanır.

@AJFaraday Sitede biraz zaman geçirmenizi ve zorlu yazma görevlerine başlamadan önce bazı soruları yanıtlamanızı öneririm. Hazır hissettiğinizde , sanal alanı , en azından ilk birkaç zorluk için ve önemsiz olmayan tüm zorluklarınız için kullanın.
Adám

27
Bu öneriyi hiç sevmiyorum! Cevap vermeyi sevmeseniz bile, lütfen zorluk göndermeye devam edin. Elbette siteyi tanımak için diğer zorluklara bakmak da güzel, Sandbox'ı da tavsiye ediyorum, ancak lütfen zorlukları yazmaya devam edin! :)
Stewie Griffin

5
Yani, bir mantık Monty Python eskizine uygulamak için? ...mükemmel!
BruceWayne

@BruceWayne, tam da yaptığımız şey bu.
AJFaraday

You may choose how to deal (or ignore) with casing in input and output.Açıklığa kavuşturmak için, bunun girdilerin büyük harf olmasını bekleyebileceğimiz anlamına mı geliyor?
Büyük

Yanıtlar:


4

Stax , 30 25 bayt

ï═H♣║GÇX→ΩM+@╢^j╬♪►╨╝ô╤c\

Koş ve hata ayıkla

Yorumlanan ascii temsili budur. Bu algoritmayı icat etmedim. Utanmadan Jonathan Allen'ın python çözümünü söküp alıyor .

9@                  10th character, modularly indexed
`#!z"pi0$L+%v9`X    store "tinny pvc woody" in the x register
3(                  keep only the first 3 characters ("tin")
#                   how many times the 10th char occurs in tin? (a)
y.eaI               index of "ea" in the input or -1 (b)
+                   a + b (one of -1, 0, or 1)
xj@                 modularly indexed word in x

Bunu çalıştır


Bu cevap tamamdır, ancak dizge değişmez kompresörü bozuktur, 4 karakterli uzun dizeler için bazen 5 karakter uzunluğunda sonuç verir (eğer `7 yi eklerseniz).
Weijun Zhou,

Sıkıştırma her zaman daha küçük bir sonuç üretmek için garanti edilmez. Sadece genellikle ingilizce dizeler için. Bu bir böcek değil. Çift tırnaklı bir dize daha küçük bir durumda varsa, bunun yerine kullanın.
özyinelemeli

Ben her zaman en kısa temsili bulmak Jelly's gibi olduğunu düşündüm (belki açıklama sonra yeniden
ödenmeli

Boşver. Bence söylemek can help youbiraz kafa karıştırıcı ama mantıklı.
Weijun Zhou

Hm, evet, kelimeler biraz yanıltıcıdır.
özyinelemeli

35

Python 2 , 99 73 65 64 63 bayt

lambda s:'PVC'*('ea'in s)or'wtoiondnyy'[s[-2:]in'instperit'::2]

Çevrimiçi deneyin!

Ayrıca 63 baytlık alternatifler:

lambda s:'PVC'*('ea'in s)or'wtoiondnyy'[s[-6::5]in'dtenmsr'::2]
lambda s:'PVC'*('ea'in s)or'wtoiondnyy'[s[::5]in'lrinaosit'::2]

23
Monty python mücadelesini çözmek için python kullandığı için geliştirilmiştir.
Brain Guider

10
@AnderBiguri, lütfen oyunuzu kullanılan dilin yerine çözüme bağlı olarak kullanın.
Shaggy

24
@Shaggy AFAIK, dil seçimi PPCG'nin eğlenceli parçalarından biri! Çözümü seviyorum, çünkü python içinde . Zaten hangisinin "kazandığını" görmek için baytlarımız var
Brain Guider

2
Evet, kodgolf'taki oylar, yalnızca kazananın aksi belirtildiği gibi, en iyisi veya en yaratıcı olduğu düşünülen yaklaşım için olmalıdır. Ayrıca herkes daha yaygın olanlarla yaratıcı olmak yerine özel codegolf dilleri kullandıysa sıkıcı olurdu
Gimli

5
Kabul ediyorum, belirli bir cevabı sevmek için birçok neden olabilir. Ancak, insanlar "Monty Python için Python" demosuyla çok heyecanlı olsalar bile, yükselenlerin biraz aşağı kaydırma zahmetinde bulunmadıklarını ve gerçekte daha sıradışı ve hatta bir başka Python cevabını takdir ettiklerini görmek üzücü. biraz daha kısa ...
Kirill L.

15

Python 2 , 62 bayt

lambda n:'wtPoiVonCdn yy'[hash(n)%97%78%28%15%2+('ea'in n)::3]

Çevrimiçi deneyin!

Nasıl?

Bu gönderim, hashfonksiyonun Python 2'deki karakter dizileri için kararlı olduğu gerçeğini kullanır . Her geçerli girişin geçerli bir çıkışı vardır. Kaba zorla tekrarlanan modulo tüm teneke ve PVC kelimeler ve odunsu kelimeler için %97%78%28%15%2döndürür . Bunun değerini ekleyerek 'sıçrama' girişi yerine elde ederiz . İşte tüm değerlerin bir tablosu:10('ea' in n)21

+----------------+----------------------+----------------+-------------+-------+
| word           | hash                 | %97%78%28%15%2 | +('ea'in n) | type  |
+----------------+----------------------+----------------+-------------+-------+
| leap           | 5971033325577305778  | 1              | 2           | PVC   |
+----------------+----------------------+----------------+-------------+-------+
| litter bin     | 2393495108601941061  | 1              | 1           | tinny |
| newspaper      | 1961680444266253688  | 1              | 1           | tinny |
| antelope       | -2930683648135325182 | 1              | 1           | tinny |
| recidivist     | -1480015990384891890 | 1              | 1           | tinny |
| tit            | -1495230934635649112 | 1              | 1           | tinny |
| simpkins       | 672871834662484926   | 1              | 1           | tinny |
+----------------+----------------------+----------------+-------------+-------+
| gone           | 3644900746337488769  | 0              | 0           | woody |
| sausage        | 4880706293475915938  | 0              | 0           | woody |
| seemly         | -8112698809316686755 | 0              | 0           | woody |
| prodding       | 7325980211772477495  | 0              | 0           | woody |
| vacuum         | -5283515051184812457 | 0              | 0           | woody |
| bound          | -6522768127315073267 | 0              | 0           | woody |
| vole           | -7823607590901614336 | 0              | 0           | woody |
| caribou        | -3644594841083815940 | 0              | 0           | woody |
| intercourse    | 2499732157679168166  | 0              | 0           | woody |
| pert           | 4142553773863848247  | 0              | 0           | woody |
| thighs         | -3490317966011085195 | 0              | 0           | woody |
| botty          | -6522767127163072681 | 0              | 0           | woody |
| erogenous zone | 7046120593231489339  | 0              | 0           | woody |
| ocelot         | -6961879712146820842 | 0              | 0           | woody |
| wasp           | -3668927459619339511 | 0              | 0           | woody |
| yowling        | 6823632481520320220  | 0              | 0           | woody |
+----------------+----------------------+----------------+-------------+-------+

Döndürülecek tür şimdi 'wtPoiVonCdn yy'hesaplanan dizinden başlayarak her üç karakteri alarak dizgeden çıkarılır .


10

JavaScript (ES6), Chrome / Kenar, 54 bayt

parseInt()Yarıçapı 36 olan büyük girişlerin davranışı uygulamaya bağlı olduğundan , bu bir SpiderMonkey (Firefox) ile çalışmaz.

s=>[,'PVC',,'Tinny'][parseInt(s+383,36)%69%7]||'Woody'

Çevrimiçi deneyin!

Nasıl?

Karma işlevi Tinny kelimeleri için 3 , PVC'ler için 1 ve Woody kelimeleri için 0 , 4 , 5 veya 6 döndürür . Yıldızla işaretlenmiş kelimeler boşlukla kesilir, çünkü boşluk parseInt () tarafından geçersiz bir karakter olarak kabul edilir .

word           | +383           | base 36 -> decimal    | mod 69 | mod 7
---------------+----------------+-----------------------+--------+------
gone           | gone383        |           36318994131 |   54   |   5
sausage        | sausage383     |      2874302392811475 |   42   |   0
seemly         | seemly383      |        80120017777107 |    6   |   6
prodding       | prodding383    |     94214834629477200 |   12   |   5
vacuum         | vacuum383      |        88266035564499 |   60   |   4
bound          | bound383       |          916101808275 |    6   |   6
vole           | vole383        |           68967369939 |   39   |   4
caribou        | caribou383     |      1249086300450771 |   63   |   0
intercourse    | intercourse383 | 3.183324871563264e+21 |   11   |   4
pert           | pert383        |           55312791699 |   21   |   0
thighs         | thighs383      |        83184557510739 |    6   |   6
botty          | botty383       |          916052399571 |   63   |   0
erogenous zone | erogenous (*)  |        41664605989780 |    7   |   0
ocelot         | ocelot383      |        68678794158483 |   39   |   4
wasp           | wasp383        |           70309896339 |   63   |   0
yowling        | yowling383     |      3523299657958227 |   39   |   4
---------------+----------------+-----------------------+--------+------
litter bin     | litter (*)     |            1301413923 |   24   |   3
newspaper      | newspaper383   |   3081816298632183000 |    3   |   3
antelope       | antelope383    |     38980419895881940 |   24   |   3
recidivist     | recidivist383  | 129824740122576960000 |    3   |   3
tit            | tit383         |            1785109395 |   45   |   3
simpkins       | simpkins383    |    104264583727840850 |   24   |   3
---------------+----------------+-----------------------+--------+------
leap           | leap383        |           46576922259 |   57   |   1

Önceki sürüm, 59 57 bayt

s=>['Woody','Tinny','PVC'][82178>>parseInt(s,35)%50%26&3]

Çevrimiçi deneyin!

Nasıl?

Aşağıda, her giriş için fonksiyonun farklı adımları verilmiştir. Birinci modülün sonucu, JS sayılarının kesinliği içindeki bir yaklaşımdır ve ilişki için matematiksel olarak geçersizdir .

input          | base-35 -> dec.   | %50 | %26 | 00000000010100000100000010
---------------+-------------------+-----+-----+---------------------------
gone           |            716219 |  19 |  19 |      00------------------>
sausage        |       52042888324 |  24 |  24 | 00----------------------->
seemly         |        1492249219 |  19 |  19 |      00------------------>
prodding       |     1659396207121 |  21 |  21 |    00-------------------->
vacuum         |        1643736697 |  47 |  21 |    00-------------------->
bound          |          17573443 |  43 |  17 |        00---------------->
vole           |           1359274 |  24 |  24 | 00----------------------->
caribou        |       22625709220 |  20 |  20 |     00------------------->
intercourse    | 51532867489988450 |  48 |  22 |   00--------------------->
pert           |           1089999 |  49 |  23 |  00---------------------->
thighs         |        1549436973 |  23 |  23 |  00---------------------->
botty          |          17572449 |  49 |  23 |  00---------------------->
erogenous zone |    33308397234728 |  28 |   2 |                       00->
ocelot         |        1279159344 |  44 |  18 |       00----------------->
wasp           |           1385255 |   5 |   5 |                    00---->
yowling        |       63810499496 |  46 |  20 |     00------------------->
litter bin     |        1131250042 |  42 |  16 |         01--------------->
newspaper      |    52754217228642 |  42 |  16 |         01--------------->
antelope       |      687218151914 |  14 |  14 |           01------------->
recidivist     |  2160354371100934 |  34 |   8 |                 01------->
tit            |             36184 |  34 |   8 |                 01------->
simpkins       |     1835782971008 |   8 |   8 |                 01------->
leap           |            917900 |   0 |   0 |                         10


9

Java 8, 81 80 67 bayt

s->s.charAt(2)<98?"PVC":s.matches(".*(.p.|is?t).*")?"tinny":"woody"

@MatrinEnder'in Retina cevabındaki Regex .

Çevrimiçi deneyin.

Orijinal cevap: 81 80 bayt

s->"anetisilire".contains(s.substring(0,2))?"tinny":s.charAt(2)<98?"PVC":"woody"

Çevrimiçi deneyin.

Açıklama:

s->                  // Method with String as both parameter and return-type
  "anetisilire".contains(s.substring(0,2))?
                     //  If the first two letters of the input are present in "anetisilire"
    "tinny"          //   Output "tinny"
   :s.charAt(2)<98?  //  Else-if the third character of the input is an 'a'
    "PVC"            //   Output "PVC"
   :                 //  Else:
    "woody"          //   Output "woody"

Ek açıklama:

litter bin:  anetisi(li)re
newspaper:   a(ne)tisilire
antelope:    (an)etisilire
recidivist:  anetisili(re)
tit:         ane(ti)silire
simpkins:    aneti(si)lire
  1. İlk iki harflerinin Yok woodydeyişle yukarıda bu dize mevcuttur, ne de legelen leap.
  2. woodyKelimelerin hiçbiri aüçüncü bir harf içermez, bu yüzden bir kelime değilse almak leapiçin kullanılır .PVCtinny
  3. Geriye kalan her şey woodylisteden bir kelime .

2
Bu problem çözme tarzındaki düşünceyi okuyabilmek gerçekten harika :)
AJFaraday

6

Haskell , 61 bayt

f(a:b:_)|b=='i'||elem a"ran"="tinny"|a=='l'="PVC"|1>0="woody"

Çevrimiçi deneyin!

Bu elle bulunan mantığı kullanır:

  • İkinci harfi ile Kelimeler iveya ilk harfi r, aya nvardırtinny
  • l( leap) İle başlayan diğer kelimelerPVC
  • Başka bir şey woody

Lynn leapilk harfini kontrol ederek bir byte kaydetti .


1
Güzel! Sen algılayarak bir bayt kaydedebilirsiniz "leap"ile |a=='l'="PVC".
Lynn

5

QuadS , 34 32 bayt

Utanmadan , Peter Norvig'in regex golfçüsünden regex de dahil olmak üzere Martin Ender'in sistemini kullanıyor .

⊃⍵
ea
.p.|is?t
$
PVC
tinny
woody

Çevrimiçi deneyin!

⊃⍵ ilk oluşumunu seç

ea "ea"
.p.|is?t "p" harfleriyle çevrili VEYA "i" ve "t", aralarında isteğe bağlı "s" harfleri
$ bulunan

… Fakat eşleşmeleri aşağıdakilerden biri ile eşleştirerek:

PVC
tinny
woody


43 baytlık Dyalog APL işlevi şöyledir:

'ea' '.p.|is?t' '$'S'PVC' 'tinny' 'woody'

Tüm davaları çevrimiçi olarak deneyin!


5

C (gcc) , 81 bayt

h;f(char*s){puts(strchr("HzYfPW",h=*s^s[1]<<2&127)?"Tinny":h<120?"Woody":"PVC");}

Çevrimiçi deneyin!

İlk iş sırası, kelimeleri kendi kategorilerine ayıracak bir karma işlev bulmaktı. Hakkında biraz karışıklıktan sonra tökezledi (s[0] ^ (s[1] << 2)) & 0x7f, 0x7f elbette orada yazdırılabilir ASCII seviyelerine düşürmek için orada. Bu, aşağıdaki bilgileri üretti (tablolar sıralandı, ancak sonuç dizeleri değil):

Woody:
----
erogenous zone  - 45
prodding        8 56
yowling         E 69
vole            J 74
intercourse     Q 81
thighs          T 84
gone            [ 91
botty           ^ 94
bound           ^ 94
ocelot          c 99
pert            d 100
caribou         g 103
seemly          g 103
vacuum          r 114
wasp            s 115
sausage         w 119

[wg8r^JgQdT^-csE

Tinny:
----
litter bin      H 72
tit             P 80
simpkins        W 87
antelope        Y 89
recidivist      f 102
newspaper       z 122

HzYfPW

PVC:
----
leap            x 120

x

Karma çarpışmalar önemli değil, çünkü aynı kategoriye güveniyorlar. Woody karmalarının tümü PVC karmaşasının (120) altında olduğundan, sadece ortaya çıkan karmaşanın Tinny karma dizgisinde ("HzYfPW") olup olmadığını kontrol etmemiz gerekir. 120 veya daha yüksekse ve Tinny kelimesi yoksa, PVC olmalıdır. Tinny kelimesi değilse ve karma değeri 120'nin altındaysa, iyi ve odunsu bir kelime olmalı.


4

x86 32 bit makine kodu, 39 bayt

HexDump:

69 01 47 6f 61 2c c7 02 50 56 43 00 3a c4 74 16
c7 02 77 6f 6f 64 85 c0 78 06 c7 02 74 69 6e 6e
66 c7 42 04 79 00 c3

Karma işlevi "sihirli" bir sayıyla çarpmadır 0x2c616f47 . Bu kodla kullanılabilecek sadece 6 numara vardır.

Her şeyden önce, yazar PVC çıktıya . Gerekirse, bunun üzerine yazılacaktır.

Karma işleminden sonra, PVC kelimesini kontrol eder; kontrol al = ah- Ben seçtim çünkü bu küçük 2 baytlık bir talimat. Sonra ya yazıyor ya wooddatinn özetlenen sonucun işaretine bağlı olarak . Sonra yazıyor y.

Montaj kodu:

    imul eax, [ecx], 0x2c616f47;
    mov dword ptr [edx], 'CVP';
    cmp al, ah;
    je done;
    mov dword ptr [edx], 'doow';
    test eax, eax;
    js skip;
    mov dword ptr [edx], 'nnit';
skip:
    mov word ptr [edx + 4], 'y';
done:
    ret;

4

Jöle ,  27  26 bayt

⁵ịe“Ṗµ»_⁼“ḣG»$ị“©LẈḊ¶$Ḍ»Ḳ¤

Karakter listelerini kabul eden ve geri veren mono bir bağlantı.

Çevrimiçi deneyin!

Nasıl?

⁵ịe“Ṗµ»_⁼“ḣG»$ị“©LẈḊ¶$Ḍ»Ḳ¤ - Link: list of characters, W   e.g. "gone"  "leap"  "newspaper"
⁵                          - literal ten                  10
 ị                         - index into (1-based & modular)     'o'     'e'     'n'
   “Ṗµ»                    - compression of characters    "int"
  e                        - exists in?                          0       0       1
              $            - last two links as a monad
          “ḣG»             -   compression of characters  "leap"
         ⁼                 -   equal?                            0       1       0
        _                  - subtract                            0      -1       1
                         ¤ - nilad followed by link(s) as a nilad:
                “©LẈḊ¶$Ḍ»  -   compression of characters  "tinny PVC woody"
                         Ḳ -   split at spaces            ["tinny","PVC","woody"]
               ị           - index into (1-based & modular)     "woody" "PVC"   "tinny"


3

Kirli , 73 57 54 bayt

⇖'le'⇗≐∀⭦)Ẃ'nar'⇗{=]}⭨'i'=]'woody'‼␛['tinny'‼␛('PVC'‼␛

Çevrimiçi deneyin!

Açıklaması:

Benzer bir eski sürüm için (golf oynamayı bıraktığımda güncelleştireceğim)

␛‼'CVP'⇨⇖'leap'⇗≡⊭◌⬅Ẃ'nar'⇗{=]}1ẁ'i'=]'woody'‼␛['tinny'‼␛

Bunun gövdesi şunlardan oluşur:

⇖            put the input into the left stack
 'leap'      push the string "leap"
       ⇗     put that string into the right stack
        ≡    are the left and right stacks equal
         ⊭   logically negate
          ◌  skip next instruction if true
           ⬅ change direction to leftwards

Sola gidersek, o zaman biz var:

       ⇨⇖'leap'⇗≡⊭◌ does stuff to the stacks, but isn't relevant
  'CVP'              push the string "PVC" (reversed, because we're going left)
 ‼                   print the string on the main stack
␛                    exit the program (this should wrap into the other exit, but that isn't working yet)

Aksi takdirde, bu, dizenin "nar" ile başlayıp başlamadığını kontrol eder:

Ẃ           wipe the right stack
 'nar'      push the string "nar"
       ⇗    move string to right stack
        {
         =  compare the top of the left and right stacks
          ] goto matching bracket if true
        }   consuming loop while the right stack is true

Sonra ikinci harfin "i" olup olmadığını kontrol ederiz:

1        push the number 1
 ẁ       drop ^ number of elements off of the left stack
  'i'    push "i"
     =   are the top of the left and middle stacks equal
       ] goto matching bracket if true

Eğer hepsi düşerse, biz karşılaşırız

'woody'   push the string "woody"
       ‼  print the string on the main stack
        ␛ exit the program

Eğer zıpladıysak, etrafa sarılırız.

[          matching bracket for the goto
 'tinny'   push the string "tinny"
        ‼  print the string on the main stack
         ␛ exit the program

3

C # 97 Bayt

string t(string w)=>w[0]!='p'&new[]{10,9,8,3}.Contains(w.Length)?"tinny":w[0]=='l'?"pvc":"woody";

İplerin uzunluğundaki bir deseni aramaya çıktım ve uzunlukları 4 ve 8 dışındakiler için benzersiz olduklarını keşfettim. Bu yüzden ilk karakterlere bakarak özel durum. Pekala, hala bazı cevaplardan daha kısa. :)


1
Biliyorsunuz, Martin Ender bu listeler için basit bir kural bulduğunda, hemen hemen her cevap aynı çözümü ya da böyle uyguladı. Orijinal bir yaklaşım görmek çok güzel. :)
AJFaraday

Geri dönüşünüz için teşekkür ederiz. :) Maden teşebbüsüne başlamadan önce başka çözümler okumadım .. belki de keşfedilmeyi bekleyen daha zarif bir çözüm var.
lee

2
string t(string w)=>sadece olabilir w=>. Sanırım 'p'diğer karakterleri int temsillerine dönüştürebilirsiniz . Sen sondaki virgül kaldırabilirsiniz
TheLethalCoder

3

Python , 59 bayt

lambda w:"wtPoiVonCdn yy"[(w*4)[9]in"tin"or(w[2]<"b")*2::3]

Çevrimiçi deneyin!

Ovs'nin Python cevabından indekslemeyi kullanır fakat daha basit ve daha kısa bir seçim fonksiyonunu kullanır:

Kelimenin onuncu harfi ise, wkaydırma ( (w*4)[9]- dört kez w*4tekrarlanır w) ile kalay ( in"tin") kelimesindeki bir harf ise, o zaman kelime kalaylı , aksi takdirde üçüncü harf ( w[2]) a ( <'b') ise kelime PVC'dir. Aksi halde kelime odunsu .

... bu 59 aynı işi yapıyor:

lambda w:"wtPoiVonCdn yy"[[(w*4)[9]in"tin",2][w[2]<"b"]::3]


2

Toplu iş, 145 bayt

@set/ps=
@if %s%==leap echo PVC&exit/b
@for %%s in (a n r)do @if %s:~,1%==%%s echo tinny&exit/b
@if %s:~1,1%==i echo tinny&exit/b
@echo woody

STDIN'de girişi ele alır. Açıklama: Kontrol ettikten sonra leap, teneke gibi kelimeler ya harflerden biriyle başlar a, nya rda ikinci harfleri olur i.


2

CJam , 35 bayt

1b_856%338<\418=-"woodytinnyPVC"5/=

Çevrimiçi deneyin!

Odunsu ve kalaylı ipleri iki sınıfa sokan kısa ifadeler için kaba bir kuvvet arayışı başlattığımı tamamen unuttum. Az önce aramanın yapıldığı konsol penceresini buldum ve ortaya çıktı ...

açıklama

1b     e# Sum the code points of the input string.
       e# The result is unique for each input, except "pert" and "wasp" which
       e# both sum to 443. But they're both woody, so that's fine.
_      e# Duplicate.
856%   e# Take the sum modulo 856.
338<   e# Check whether the result is less than 338. That's true for all
       e# tinny words.
\      e# Swap with the other copy of the sum.
418=   e# Check whether the sum is equal to 418, which identifies "leap".
-      e# Subtract. Gives -1 for "leap", 1 for tinny words and 0 for woody words.
"woodytinnyPVC"5/
       e# Create the list ["woody" "tinny" "PVC"].
       e# Select the correct string.

1

Excel, 81 bayt

=IF(ISNUMBER(FIND(LEFT(A1,2),"anetisilire")),"tinny",IF(A1="leap","PVC","woody"))

'Anetisilire' yöntemini kullanarak.



1

JavaScript, 60 , 50

EDIT Tüm diğer regex cevaplarını gördüm. Sanırım sadece körüm. Her neyse, işte aynı regex kullanarak bir tane

i=="leap"?"PVC":/.p.|is*t/.test(i)?"tinny":"woody"

Ayrıca, şimdi diğer JS cevabını geçiyor

Parça, parçacık:

let test = i => i=="leap"?"PVC":/.p.|is*t/.test(i)?"tinny":"woody"

let woody = `gone
sausage
seemly
prodding
vacuum
bound
vole
caribou
intercourse
pert
thighs
botty
erogenous zone
ocelot
wasp
yowling`;
console.log("THESE SHOULD BE woody");
woody.split("\n").forEach(el => console.log(test(el)));
let tinny = `litter bin
newspaper
antelope
recidivist
tit
simpkins`;
console.log("THESE SHOULD BE tinny");
tinny.split("\n").forEach(el => console.log(test(el)));
console.log("THIS SHOULD BE PVC");
console.log(test("leap"));

Eski cevap

Henüz regex ile görmedim, bu yüzden denerim diye düşündüm

i=="leap"?"PVC":/[gyuz]|[or][tl]|as/.test(i)?"woody":"tinny"

Bir return deyimini dahil etmediğim için bunun 60 ya da daha fazla sayıldığından emin değilim. Bilgisayarıma girdiğimde pasaj ekleyeceğim

Düzenleme: Metin Parçacığı

let test = i => i=="leap"?"PVC":/[gyuz]|[or][tl]|as/.test(i)?"woody":"tinny"

let woody = `gone
sausage
seemly
prodding
vacuum
bound
vole
caribou
intercourse
pert
thighs
botty
erogenous zone
ocelot
wasp
yowling`;
console.log("THESE SHOULD BE woody");
woody.split("\n").forEach(el => console.log(test(el)));
let tinny = `litter bin
newspaper
antelope
recidivist
tit
simpkins`;
console.log("THESE SHOULD BE tinny");
tinny.split("\n").forEach(el => console.log(test(el)));
console.log("THIS SHOULD BE PVC");
console.log(test("leap"));

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.