ไม้ยืนต้นคำไม่แข็งแรง


35

หมายเหตุ:มีคำหยาบในคำถามนี้

มีปริศนาที่ซ่อนอยู่ในร่าง Monty Python แบบคลาสสิกนี้(คุณสามารถเตรียมสคริปต์ออนไลน์ได้)

วลีต่าง ๆ ถูกอธิบายว่าเป็น 'woody' หรือ 'tinny' และหนึ่งถูกอธิบายว่าเป็น 'PVC'

ได้รับวลีตอบสนองกับประเภทของมันตามรายการต่อไปนี้:

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

กฎระเบียบ

  • ถ้าใส่เป็นหนึ่งในรายการดังกล่าวข้างต้นส่งออกควรจะwoody, tinnyหรือPVCตาม
  • อินพุตทั้งหมดเป็นตัวพิมพ์เล็ก
  • พฤติกรรมใด ๆ ที่ยอมรับได้สำหรับวลีที่ไม่ได้ระบุไว้ข้างต้น
  • ไบต์ที่น้อยที่สุดในคำตอบชนะ

@AJFaraday ฉันขอแนะนำให้ใช้เวลาสักครู่บนไซต์และตอบคำถามก่อนที่จะเริ่มเขียนงานที่ท้าทาย เมื่อคุณรู้สึกว่าพร้อมให้ใช้กล่องทรายอย่างน้อยก็สำหรับความท้าทายสองสามข้อแรกของคุณและสำหรับความท้าทายที่ไม่สำคัญอื่น ๆ
อดัม

27
ฉันไม่ชอบคำแนะนำนั้นเลย! โปรดโพสต์ความท้าทายต่อไปแม้ว่าคุณจะไม่ชอบคำตอบก็ตาม แน่นอนว่าการดูความท้าทายอื่น ๆ เพื่อทำความเข้าใจกับเว็บไซต์และฉันขอแนะนำ Sandbox ด้วย แต่โปรดเขียนความท้าทายต่อไป! :)
Stewie Griffin

5
ดังนั้นเราจะใช้ตรรกะกับร่าง Monty Python หรือไม่ ... ยอดเยี่ยม!
BruceWayne

@ BruceWayne นั่นคือสิ่งที่เรากำลังทำอยู่
AJFaraday

You may choose how to deal (or ignore) with casing in input and output.เพื่อให้ความกระจ่างนี้หมายความว่าเราสามารถคาดหวังว่าอินพุตจะเป็นตัวพิมพ์ใหญ่หรือไม่
Marurous

คำตอบ:


4

Stax , 30 25 ไบต์

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

เรียกใช้และแก้ไขข้อบกพร่อง

การแสดง ascii ที่คอมเม้นต์คือสิ่งนี้ ฉันไม่ได้คิดค้นอัลกอริทึมนี้ มันฉีกออกลงคอแก้ปัญหาหลามโจนาธานอัลเลน

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

เรียกใช้อันนี้


คำตอบนี้ก็โอเค แต่ตัวบีบอัดสตริงตัวอักษรเป็นบั๊กบางครั้งก็สร้างผลลัพธ์ยาว 5 ตัวอักษร (ถ้าคุณรวม `, 7) สำหรับสตริงยาว 4 ตัว
Weijun Zhou

การบีบอัดไม่ได้รับประกันว่าจะให้ผลลัพธ์ที่เล็กลงเสมอไป เพียงแค่สำหรับสตริงภาษาอังกฤษ นั่นไม่ใช่ข้อผิดพลาด หากคุณมีกรณีที่สตริงที่ยกมาสองครั้งมีขนาดเล็กเพียงแค่ใช้มันแทน
เรียกซ้ำ

ฉันคิดว่ามันเป็นเหมือนของ Jelly ที่มักจะพบว่าเป็นตัวแทนที่สั้นที่สุด (บางทีคำอธิบายควรจะ reworded แล้ว?)
Weijun Zhou

ไม่เป็นไร. ฉันคิดว่าการพูดcan help youนั้นมีความสับสนเล็กน้อย แต่ก็โอเคอย่างมีเหตุผล
Weijun Zhou

หืมใช่ถ้อยคำเป็นการเข้าใจผิด
เรียกซ้ำ

35

Python 2 , 99 73 65 64 63 63 ไบต์

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

ลองออนไลน์!

ทางเลือกอื่นเช่น 63 ไบต์:

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
เพิ่มขึ้นเนื่องจากการใช้หลามเพื่อแก้ปัญหาความท้าทายของมอนตี้
Brain Guider

10
@AderderBiguri โปรดลงคะแนนของคุณตามวิธีแก้ปัญหาเองมากกว่าภาษาที่ใช้
Shaggy

24
@Shaggy AFAIK การเลือกใช้ภาษาเป็นส่วนที่สนุกของ PPCG! ฉันชอบการแก้ปัญหาเพราะในหลามของมัน เรามีจำนวนไบต์เพื่อดูว่า "ชนะ" ตัวใด
Brain Guider

2
ใช่การลงคะแนนใน codegolf ควรเป็นเพียงวิธีที่ดีที่สุดหรือสร้างสรรค์มากที่สุดเท่าที่ผู้ชนะจะได้รับการพิจารณาเป็นอย่างอื่น นอกจากนี้มันจะน่าเบื่อถ้าทุกคนใช้ภาษา codegolf พิเศษแทนการใช้ความคิดสร้างสรรค์กับคนทั่วไปมากขึ้น
Gimli

5
ฉันเห็นด้วยอาจมีหลายเหตุผลที่จะชอบคำตอบเฉพาะ แต่ถึงแม้ว่าผู้คนจะรู้สึกตื่นเต้นกับคำว่า "Python for Monty Python" แต่ก็ยังเศร้าที่เห็นว่าผู้ประท้วงมักไม่ต้องการเลื่อนลงมาเล็กน้อยและแสดงความชื่นชมต่อคำตอบของPythonที่ไม่ธรรมดา สั้นลงเล็กน้อย ...
Kirill L.

15

Python 2 , 62 ไบต์

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

ลองออนไลน์!

อย่างไร?

การส่งนี้ใช้ความจริงที่ว่าhashฟังก์ชั่นมีความเสถียรสำหรับสตริงใน Python 2 แต่ละอินพุตที่ถูกต้องมีการส่งออกที่ถูกต้อง โมดูโลที่ถูกบังคับแบบซ้ำ ๆ นั้น%97%78%28%15%2จะส่งคืน1สำหรับคำที่ไม่แข็งแรงและพีวีซีทั้งหมดและ0สำหรับคำที่เป็นไม้ โดยการเพิ่มมูลค่าของ('ea' in n)มันเราได้รับ2แทน1การป้อนข้อมูล 'เผ่น' นี่คือตารางค่าทั้งหมด:

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

ประเภทที่จะคืนตอนนี้แยกออกจากสตริง'wtPoiVonCdn yy'โดยการทุกตัวละครที่สามเริ่มต้นที่ดัชนีจากการคำนวณ


10

JavaScript (ES6), Chrome / Edge, 54 ไบต์

เนื่องจากพฤติกรรมของparseInt()อินพุตขนาดใหญ่ที่มีค่าฐานเท่ากับ 36 นั้นขึ้นอยู่กับการนำไปใช้งานจึงไม่สามารถทำงานกับ SpiderMonkey (Firefox)

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

ลองออนไลน์!

อย่างไร?

ฟังก์ชัน hash ส่งคืน3สำหรับคำ Tinny, 1สำหรับ PVC และ0 , 4 , 5หรือ6สำหรับคำ Woody คำที่มีเครื่องหมายดอกจันจะถูกตัดโดยปริยายเพราะพื้นที่ถือว่าเป็นตัวอักษรที่ไม่ถูกต้องโดย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

รุ่นก่อนหน้า59 57 ไบต์

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

ลองออนไลน์!

อย่างไร?

ด้านล่างเป็นขั้นตอนที่แตกต่างกันของฟังก์ชั่นสำหรับแต่ละอินพุต ผลของโมดูโลแรกคือการประมาณภายในความแม่นยำของตัวเลข JS และไม่ถูกต้องทางคณิตศาสตร์สำหรับการมีเพศสัมพันธ์

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

Retina , 39 38 36 ไบต์

บันทึก 1 ไบต์โดยใช้คู่การแทนที่สามคู่ตามคำตอบของAdám

L#-3$0`ea
PVC
.p.|is?t
tinny
$
woody

ลองออนไลน์!

ผมได้.p.|is*tregex จากนักกอล์ฟ regex ของปีเตอร์นอร์วิก


2
เอ๊ะโอ้มีการอ้างเหตุเป็นวงกลม
อดัม

9

Java 8, 81 80 67 ไบต์

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

Regex จากคำตอบ Retina ของ@MatrinEnder

ลองออนไลน์

คำตอบเดิม: 81 80 ไบต์

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

ลองออนไลน์

คำอธิบาย:

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"

คำอธิบายเพิ่มเติม:

litter bin:  anetisi(li)re
newspaper:   a(ne)tisilire
antelope:    (an)etisilire
recidivist:  anetisili(re)
tit:         ane(ti)silire
simpkins:    aneti(si)lire
  1. ไม่มีตัวอักษรสองตัวแรกของwoodyคำที่มีอยู่ในสายนี้ข้างต้นไม่เป็นจากleleap
  2. ไม่มีwoodyคำมีaเป็นอักษรตัวที่สามเพื่อที่จะใช้ในการรับleapไปPVCถ้ามันไม่ได้เป็นtinnyคำว่า
  3. ทุกอย่างเป็นคำจากwoodyรายการ

2
มันเจ๋งจริงๆที่สามารถอ่านการแก้ปัญหาแบบนี้ :)
AJFaraday

6

Haskell , 61 ไบต์

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

ลองออนไลน์!

ใช้ตรรกะที่ค้นพบนี้:

  • คำที่มีอักษรตัวที่สองiหรือตัวอักษรตัวแรกr, aหรือnมีtinny
  • คำอื่น ๆ ที่เริ่มต้นด้วยl( leap) คือPVC
  • สิ่งอื่นใดคือ woody

Lynn บันทึกไบต์ด้วยการตรวจสอบleapด้วยอักษรตัวแรก


1
ดี! คุณสามารถบันทึกไบต์โดยการตรวจสอบด้วย"leap" |a=='l'="PVC"
Lynn

5

QuadS , 34 32 ไบต์

ลงคอใช้ระบบมาร์ตินพลิกรวมทั้ง regex จากนักกอล์ฟ regex ของปีเตอร์นอร์วิก

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

ลองออนไลน์!

⊃⍵ เลือกเหตุการณ์แรกของ

ea "ea"
.p.|is?t "p" ล้อมรอบด้วยตัวอักษรหรือ "i" และ "t" พร้อมด้วย "s" ซึ่งเป็นตัวเลือกระหว่างพวกเขา
$ สิ้นสุดอินพุต

… แต่แทนที่การจับคู่ด้วยหนึ่งในสิ่งต่อไปนี้:

PVC
tinny
woody


ฟังก์ชันDyalog APL ที่เทียบเท่าขนาด 43 ไบต์คือ:

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

ลองทุกกรณีทางออนไลน์!


5

C (gcc) , 81 ไบต์

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

ลองออนไลน์!

ลำดับแรกของธุรกิจคือการค้นหาฟังก์ชันแฮชที่จะแยกคำเหล่านั้นออกเป็นหมวดหมู่ หลังจากที่เล่นซอเกี่ยวกับตัวฉันแล้วฉันก็สะดุด(s[0] ^ (s[1] << 2)) & 0x7fที่ 0x7f อยู่ที่นั่นเพื่อนำมันลงไปสู่ระดับ ASCII ที่พิมพ์ได้ สิ่งนี้สร้างข้อมูลต่อไปนี้ (ตารางถูกเรียงลำดับ แต่ไม่ใช่สตริงผลลัพธ์):

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

การชนของแฮ็ชไม่สำคัญเนื่องจากถูกปรับให้อยู่ในหมวดหมู่เดียวกัน เราเพียงแค่ต้องตรวจสอบว่าแฮชที่เกิดขึ้นนั้นอยู่ในสตริงแฮงค์ของ Tinny ("HzYfPW") หรือไม่เนื่องจากแฮชดี้ Woody นั้นต่ำกว่าแฮช PVC (120) ถ้า 120 หรือสูงกว่าและไม่ใช่คำว่า Tinny ต้องเป็น PVC หากไม่ใช่คำ Tinny และแฮชต่ำกว่า 120 คำนั้นจะต้องเป็นคำที่ดี


4

x86 รหัสเครื่อง 32 บิต 39 ไบต์

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

ฟังก์ชั่นแฮชคือการคูณด้วยหมายเลข "วิเศษ" 0x2c616f47ฟังก์ชั่นกัญชาคือคูณด้วยจำนวนมี 6 ตัวเลขเท่านั้นที่สามารถใช้กับรหัสนี้ได้

ก่อนอื่นมันเขียน PVCไปยังผลลัพธ์ สิ่งนี้จะถูกเขียนทับหากจำเป็น

หลังจาก hashing จะตรวจสอบคำ PVC; การตรวจสอบคือal = ah- ฉันเลือกเพราะมันเป็นคำสั่งขนาดเล็ก 2 ไบต์ จากนั้นจะเขียนอย่างใดอย่างหนึ่งwoodหรือtinnขึ้นอยู่กับสัญลักษณ์ของผลการแฮช yจากนั้นมันจะเขียน

รหัสการประกอบ:

    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

เยลลี่ ,  27  26 ไบต์

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

ลิงก์ monadic ยอมรับและส่งคืนรายการอักขระ

ลองออนไลน์!

อย่างไร?

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

สกปรก , 73 57 54 ไบต์

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

ลองออนไลน์!

อธิบาย:

สำหรับรุ่นเก่าที่คล้ายกัน (ฉันจะอัปเดตเมื่อฉันหยุดเล่นกอล์ฟ)

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

เนื้อหาของสิ่งนี้ประกอบไปด้วย:

⇖            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

หากเราไปทางซ้ายเราก็มี:

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

มิฉะนั้นจะตรวจสอบว่าสตริงเริ่มต้นด้วย "nar" ใด ๆ :

Ẃ           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

จากนั้นเราตรวจสอบว่าอักษรตัวที่สองคือ "i":

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

หากพวกเขาล้มเหลวเราจะพบกัน

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

หากเราลงเอยด้วยการกระโดด

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

3

C # 97 ไบต์

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

ฉันไปหารูปแบบในความยาวของสตริงและพบว่าพวกเขาไม่ซ้ำกันยกเว้นความยาว 4 และ 8 ดังนั้นฉันจึงเป็นกรณีพิเศษโดยดูที่ตัวละครตัวแรก โอ้ดีมันยังสั้นกว่าคำตอบ :)


1
คุณรู้ไหมว่าเมื่อมาร์ตินเอนเดอร์พบกฎง่ายๆสำหรับรายการเหล่านี้คำตอบทุกข้อที่นำมาใช้ในโซลูชันเดียวกันไม่ทางใดก็ทางหนึ่ง มันยอดเยี่ยมที่ได้เห็นวิธีการดั้งเดิม :)
AJFaraday

ขอบคุณสำหรับความคิดเห็น. :) ฉันไม่ได้อ่านวิธีแก้ปัญหาอื่น ๆ ก่อนที่จะลองของฉัน .. บางทีอาจจะมีวิธีแก้ปัญหาที่สง่างามกว่าที่ยังไม่ได้ค้นพบ .. ฉันหวังว่าพวกเขาทุกคนจะมีความยาวที่ไม่เหมือนใคร
lee

2
string t(string w)=>w=>อาจจะเป็นแค่ คุณสามารถแปลง'p'และตัวละครอื่น ๆ เป็นตัวแทน int ของพวกเขาฉันคิดว่า คุณสามารถลบเครื่องหมายทวิภาคกึ่งท้าย
TheLethalCoder

3

Pythonขนาด 59 ไบต์

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

ลองออนไลน์!

ใช้การจัดทำดัชนีจากคำตอบ Python ของ ovsแต่ฟังก์ชันตัวเลือกที่ง่ายและสั้นกว่า:

หากตัวอักษรตัวที่สิบของคำที่wมีการตัด ( (w*4)[9]- ที่w*4ซ้ำwสี่ครั้ง) คือตัวอักษรในคำว่าtin ( in"tin") คำนั้นจะไม่แข็งแรงไม่เช่นนั้นถ้าตัวอักษรตัวที่สาม ( w[2]) เป็นa ( <'b') ดังนั้นคำว่าPVCมิฉะนั้นคำว่าเป็นไม้ไม้ยืนต้น

... นี้ 59 ทำหน้าที่เดียวกัน:

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


2

แบตช์ 145 ไบต์

@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 คำอธิบาย: หลังจากการตรวจสอบสำหรับleapคำไม่แข็งแรงทั้งเริ่มต้นด้วยหนึ่งตัวอักษรa, nหรือหรือจดหมายฉบับที่สองของพวกเขาคือri


2

CJam , 35 ไบต์

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

ลองออนไลน์!

ฉันลืมไปเลยว่าฉันเริ่มค้นหาสัตว์ป่าเพื่อหาสำนวนสั้น ๆ เพื่อแฮ็คไม้และไม้ดีบุกเป็นสองชั้น ฉันเพิ่งพบหน้าต่างคอนโซลที่การค้นหารันและปรากฎว่าพบบางสิ่ง ...

คำอธิบาย

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

JavaScript, 60 , 50

แก้ไขฉันเห็นคำตอบ regex อื่น ๆ ทั้งหมด ฉันเดาว่าฉันแค่ตาบอด อย่างไรก็ตามนี่คือหนึ่งโดยใช้ regex เดียวกัน

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

นอกจากนี้ตอนนี้มันเป็นคำตอบที่ JS อื่น ๆ

ตัวอย่างข้อมูล:

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

คำตอบเก่า

ฉันยังไม่เห็น regex เลยดังนั้นฉันคิดว่าฉันจะลองดู

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

ไม่แน่ใจว่าสิ่งนี้นับเป็น 60 หรือมากกว่าเพราะฉันไม่ได้รวมคำสั่งการส่งคืน จะเพิ่มข้อมูลโค้ดเมื่อฉันไปถึงคอมพิวเตอร์

แก้ไข: ตัวอย่าง

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.