Từ gỗ, từ tinny


35

Lưu ý: Có một số từ thô lỗ trong câu hỏi này.

Có một câu đố ngầm được đặt ra trong bản phác thảo Monty Python cổ điển này (bạn cũng có thể sẵn sàng kịch bản trực tuyến).

Các cụm từ khác nhau được mô tả là 'gỗ' hoặc 'tinny', và một cụm từ được mô tả là 'PVC'.

Đưa ra một cụm từ, trả lời với loại của nó theo các danh sách sau đây:

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

Quy tắc

  • Nếu đầu vào thuộc một trong các danh sách trên, đầu ra phải woody, tinnyhoặc PVC, theo đó.
  • Tất cả đầu vào là chữ thường.
  • Bất kỳ hành vi đều được chấp nhận cho các cụm từ không được liệt kê ở trên.
  • Các byte ít nhất trong câu trả lời thắng.

@AJFaraday Tôi khuyên bạn nên dành thời gian trên trang web và trả lời một số câu hỏi trước khi bắt tay vào nhiệm vụ khó khăn là viết thử thách. Khi bạn cảm thấy sẵn sàng, hãy sử dụng hộp cát , ít nhất là cho những thử thách đầu tiên của bạn và cho bất kỳ thử thách không tầm thường nào.
Adám

27
Tôi không thích đề xuất đó chút nào! Vui lòng tiếp tục đăng các thử thách, ngay cả khi bạn không muốn trả lời. Tất nhiên thật tuyệt khi xem xét các thử thách khác để cảm nhận về trang web và tôi cũng khuyên bạn nên sử dụng Sandbox, nhưng vui lòng tiếp tục viết thử thách! :)
Stewie Griffin

5
Vì vậy, chúng ta sẽ áp dụng logic cho bản phác thảo Monty Python? ...Xuất sắc!
BruceWayne

@BruceWayne đó chính xác là những gì chúng tôi đang làm.
AJFaraday

You may choose how to deal (or ignore) with casing in input and output.Để làm rõ, điều này có nghĩa là chúng ta có thể mong đợi đầu vào được viết hoa?
Οurous

Câu trả lời:


4

Stax , 30 25 byte

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

Chạy và gỡ lỗi nó

Các đại diện ascii nhận xét là đây. Tôi đã không phát minh ra thuật toán này. Nó xấu hổ xé toạc dung dịch trăn của Jonathan Allen .

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

Chạy cái này


Câu trả lời này là OK, nhưng trình nén chuỗi ký tự là lỗi, đôi khi nó tạo ra kết quả dài 5 ký tự (nếu bạn bao gồm `, 7) cho chuỗi dài 4 ký tự.
Weijun Zhou

Nén không phải lúc nào cũng được đảm bảo để tạo ra một kết quả nhỏ hơn. Chỉ thường cho chuỗi tiếng Anh. Đó không phải là một lỗi. Nếu bạn có trường hợp chuỗi trích dẫn kép nhỏ hơn, chỉ cần sử dụng thay thế.
đệ quy

Tôi nghĩ nó giống như Jelly luôn tìm thấy đại diện ngắn nhất (có lẽ nên mô tả lại sau đó?)
Weijun Zhou

Đừng bận tâm. Tôi nghĩ rằng nói can help youlà một chút bối rối nhưng về mặt logic là OK.
Weijun Zhou

Hừm, vâng, từ ngữ là loại gây hiểu lầm.
đệ quy

35

Con trăn 2 , 99 73 65 64 63 byte

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

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

Các lựa chọn thay thế cũng với 63 byte:

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
Upvote vì sử dụng python để giải quyết một thách thức trăn monty.
Brain Guider

10
@AnderBiguri, vui lòng bỏ phiếu dựa trên chính giải pháp thay vì ngôn ngữ được sử dụng.
Xù xì

24
@Shaggy AFAIK sự lựa chọn ngôn ngữ là một trong những phần thú vị của PPCG! Tôi thích giải pháp, bởi vì nó trong python . Chúng tôi đã có các byte để xem cái nào "thắng"
Brain Guider

2
Có, phiếu bầu trong codegolf chỉ nên dành cho cách tiếp cận được coi là tốt nhất hoặc sáng tạo nhất vì người chiến thắng được xác định theo cách khác. Ngoài ra, sẽ thật nhàm chán nếu tất cả mọi người chỉ sử dụng các ngôn ngữ codegolf đặc biệt thay vì sáng tạo với những ngôn ngữ phổ biến hơn
Gimli

5
Tôi đồng ý, có thể có nhiều lý do để thích một câu trả lời cụ thể. Nhưng ngay cả khi mọi người rất hào hứng với cách chơi chữ "Python for Monty Python", vẫn rất buồn khi thấy những người nâng cấp không thèm cuộn xuống một chút, và thể hiện sự đánh giá cao đối với một câu trả lời khác của Python thực sự khác thường hơn và thậm chí là một ngắn hơn ...
Kirill L.

15

Python 2 , 62 byte

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

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

Làm sao?

Trình này sử dụng thực tế là hashhàm ổn định cho các chuỗi trong Python 2. Mỗi đầu vào hợp lệ có một đầu ra hợp lệ. Modulo lặp đi lặp lại cưỡng bức %97%78%28%15%2trả lại 1cho tất cả các từ tinnyPVC0cho các từ gỗ . Bằng cách thêm giá trị của ('ea' in n)nó, chúng tôi nhận được 2thay vì 1cho 'bước nhảy' đầu vào. Đây là bảng gồm tất cả các giá trị:

+----------------+----------------------+----------------+-------------+-------+
| 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 |
+----------------+----------------------+----------------+-------------+-------+

Loại để trả về bây giờ được trích xuất từ ​​chuỗi 'wtPoiVonCdn yy'bằng cách lấy mỗi ký tự thứ ba, bắt đầu từ chỉ mục được tính toán.


10

JavaScript (ES6), Chrome / Edge, 54 byte

Vì hành vi của parseInt()các đầu vào lớn có cơ số 36 phụ thuộc vào việc triển khai , nên cái này không hoạt động với SpiderMonkey (Firefox).

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

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

Làm sao?

Hàm băm trả về 3 cho các từ Tinny, 1 cho PVC và 0 , 4 , 5 hoặc 6 cho các từ Woody. Các từ được đánh dấu hoa thị bị cắt ngắn hoàn toàn vì không gian được coi là một ký tự không hợp lệ bởi parseInt () .

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

Phiên bản trước, 59 57 byte

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

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

Làm sao?

Dưới đây là các bước khác nhau của chức năng cho mỗi đầu vào. Kết quả của modulo đầu tiên là một xấp xỉ trong độ chính xác của các số JS và không hợp lệ về mặt toán học cho giao hợp .

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 byte

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

Regex từ câu trả lời Retina của @MatrinEnder .

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

Câu trả lời gốc: 81 80 byte

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

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

Giải trình:

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"

Giải thích thêm:

litter bin:  anetisi(li)re
newspaper:   a(ne)tisilire
antelope:    (an)etisilire
recidivist:  anetisili(re)
tit:         ane(ti)silire
simpkins:    aneti(si)lire
  1. Không có hai chữ cái đầu tiên của các woodytừ có trong Chuỗi này ở trên, cũng không phải letừ leap.
  2. Không có woodytừ nào có achữ cái thứ ba, vì vậy nó được sử dụng leapđể viết PVCnếu nó không phải là một từtinny từ.
  3. Mọi thứ khác là một từ trong woodydanh sách.

2
Thật tuyệt khi có thể đọc qua kiểu suy nghĩ giải quyết vấn đề này :)
AJFaraday

6

Haskell , 61 byte

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

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

Sử dụng logic tìm thấy này:

  • Nói với lá thư thứ hai ihoặc chữ cái đầu tiên r, ahoặc ntinny
  • Bất kỳ từ nào khác bắt đầu bằng l( leap) làPVC
  • Bất cứ điều gì khác là woody

Lynn đã lưu một byte bằng cách kiểm tra leapbằng chữ cái đầu tiên của nó.


1
Tốt đẹp! Bạn có thể lưu một byte bằng cách phát hiện "leap"với |a=='l'="PVC".
Lynn

5

QuadS , 34 32 byte

Không biết xấu hổ sử dụng hệ thống của Martin Ender , bao gồm cả regex từ tay golf regex của Peter Norvig .

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

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

⊃⍵ chọn sự xuất hiện đầu tiên của

ea "ea"
.p.|is?t "p" được bao quanh bởi các chữ cái HOẶC "i" và "t" với một "s" tùy chọn giữa chúng
$  cuối đầu vào

Thay thế nhưng thay thế các trận đấu bằng một trong những điều sau đây:

PVC
tinny
woody


Hàm APL Dyalog tương đương 43 byte là:

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

Hãy thử tất cả các trường hợp trực tuyến!


5

C (gcc) , 81 byte

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

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

Đơn hàng đầu tiên của doanh nghiệp là tìm một số hàm băm có thể tách các từ thành các danh mục của chúng. Sau một vài lần lo lắng về việc tôi tình cờ phát hiện ra (s[0] ^ (s[1] << 2)) & 0x7f, nơi 0x7f dĩ nhiên là ở đó để đưa nó xuống mức ASCII có thể in được. Điều này tạo ra các thông tin sau (các bảng được sắp xếp, nhưng không phải là chuỗi kết quả):

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

Các va chạm băm không quan trọng, vì chúng được tâm sự với cùng một loại. Chúng tôi chỉ phải kiểm tra xem băm kết quả có trong chuỗi băm Tinny ("HzYfPW") hay không, vì băm Woody đều nằm dưới băm PVC (120). Nếu từ 120 trở lên, và không phải là từ Tinny, thì đó phải là PVC. Nếu không phải là một từ Tinny, và hàm băm dưới 120, thì đó phải là một từ tốt, thân gỗ.


4

mã máy x86 32 bit, 39 byte

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

Hàm băm được nhân với một số "ma thuật" 0x2c616f47. Chỉ có 6 số có thể được sử dụng với mã này.

Trước hết, nó ghi PVCvào đầu ra. Điều này sẽ được ghi đè, nếu cần.

Sau khi băm, nó kiểm tra từ PVC; kiểm tra là al = ah- Tôi đã chọn nó bởi vì đó là một lệnh 2 byte nhỏ. Sau đó, nó viết woodhoặc tinn, tùy thuộc vào dấu hiệu của kết quả băm. Sau đó, nó viết y.

Mã hội:

    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

Thạch ,  27  26 byte

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

Một liên kết đơn âm chấp nhận và trả về danh sách các nhân vật.

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

Làm sao?

⁵ị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

Bẩn , 73 57 54 byte

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

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

Giải thích:

Đối với phiên bản cũ hơn tương tự (Tôi sẽ cập nhật nó khi tôi dừng chơi gôn)

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

Cơ thể của điều này được tạo thành từ:

⇖            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

Nếu cuối cùng chúng ta đi bên trái, thì chúng ta có:

       ⇨⇖'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)

Mặt khác, điều này kiểm tra nếu chuỗi bắt đầu bằng bất kỳ "nar" nào:

Ẃ           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

Sau đó chúng tôi kiểm tra xem chữ cái thứ hai có phải là "i" không:

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

Nếu tất cả đều rơi vào, chúng ta chạy vào

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

Nếu chúng ta kết thúc việc nhảy, chúng ta sẽ đi vòng quanh

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

3

C # 97 byte

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

Tôi đã tìm kiếm một mẫu có độ dài của chuỗi và thấy chúng là duy nhất ngoại trừ độ dài 4 và 8. Vì vậy, tôi đặc biệt xử lý chúng bằng cách nhìn vào các ký tự đầu tiên. Ồ, nó vẫn còn ngắn hơn một số câu trả lời. :)


1
Bạn biết đấy, khi Martin Ender tìm thấy một quy tắc đơn giản cho các danh sách này, chỉ cần mỗi câu trả lời thực hiện cùng một giải pháp, bằng cách này hay cách khác. Thật tuyệt khi thấy một cách tiếp cận ban đầu. :)
AJFaraday

Cảm ơn vì bạn đã phản hồi. :) Tôi đã không đọc các giải pháp khác trước khi thử của tôi .. có lẽ vẫn còn một giải pháp thanh lịch hơn chưa được khám phá .. Tôi rất mong tất cả chúng đều có độ dài duy nhất thì đây sẽ là Giải pháp.
lee

2
string t(string w)=>có thể chỉ w=>. 'p'Tôi nghĩ bạn có thể chuyển đổi và các nhân vật khác thành biểu diễn int của họ. Bạn có thể xóa dấu chấm phẩy
TheLethalCoder vào

3

Python , 59 byte

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

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

Sử dụng lập chỉ mục từ câu trả lời Python của ovs nhưng chức năng lựa chọn đơn giản và ngắn hơn:

Nếu chữ thứ mười của từ, wvới cách gói ( (w*4)[9]- trong đó w*4lặp lại wbốn lần) là một chữ cái trong từ tin ( in"tin") thì từ đó là tinny , nếu không thì chữ cái thứ ba ( w[2]) là a ( <'b') thì từ đó là PVC nếu không thì từ này là gỗ .

... 59 này làm công việc tương tự:

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


2

Hàng loạt, 145 byte

@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

Đưa đầu vào vào STDIN. Giải thích: Sau khi kiểm tra cho leap, lời nói tinny một trong hai bắt đầu với một trong các chữ cái a, nhoặc rhoặc lá thư thứ hai của họ là i.


2

CJam , 35 byte

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

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

Tôi hoàn toàn quên rằng tôi đã bắt đầu một cuộc tìm kiếm vũ phu cho các biểu thức ngắn để băm các chuỗi gỗ và tinny thành hai lớp. Tôi vừa tìm thấy cửa sổ giao diện điều khiển nơi tìm kiếm chạy và hóa ra nó thực sự tìm thấy thứ gì đó ...

Giải trình

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 byte

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

Sử dụng phương pháp 'anetisilire'.



1

JavaScript, 60 , 50

EDIT Tôi thấy tất cả các câu trả lời regex khác. Tôi đoán tôi chỉ bị mù. Dù sao, đây là một trong những sử dụng cùng một regex

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

Ngoài ra, bây giờ, nó đánh bại câu trả lời JS khác

Đoạn trích:

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"));

Câu trả lời cũ

Tôi chưa thấy cái nào với regex cả, vì vậy tôi nghĩ tôi sẽ thử

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

Không chắc chắn nếu điều này được tính là 60 hoặc nhiều hơn bởi vì tôi đã không bao gồm một tuyên bố trở lại. Sẽ thêm một đoạn khi tôi vào máy tính của mình

Chỉnh sửa: Đoạn trích

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"));

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.