สนามมินิกอล์ฟวันจันทร์ # 5: <s> อย่า </s> ลองทำเองที่บ้าน


24

Monday Mini-Golf:คำถามสั้น ๆ เกี่ยวโพสต์ (หวังว่า!) ทุกวันจันทร์

บางครั้งผู้คนเบื่อกฎของชีวิต: "อย่าทำอย่างนี้", "คุณทำไม่ได้", "เราจะไม่ปล่อยให้คุณทำอย่างนี้" ดูเหมือนว่าจะ จำกัด บางครั้ง! แต่ทุกขณะนี้ก็เป็นการดีที่จะได้สนุกสักหน่อยดังนั้นลองเขียนโค้ดเพื่อแก้ไขกฎเหล่านี้ และในขณะที่เราอยู่ที่นี่อาจแก้ไขการปฏิเสธอื่น ๆ เช่นกัน (แน่นอนการแก้ไขเหล่านี้จะไม่เพียงชั่วคราวดังนั้นเราจะฝากข้อความดั้งเดิมไว้ด้วย)

ท้าทาย

ความท้าทายของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่ทำให้ HTML มี<s>ขีด</s>จำกัด ในคำที่ จำกัด - นั่นคือคำที่ลงท้ายด้วยn'tหรือตามด้วยnot- และหลังจากแต่ละคำเหล่านี้จะแทรกการเทียบเท่าในเชิงบวกใน CAPS ทั้งหมด ในตอนท้ายหลังจากช่องว่างจำนวนของการเปลี่ยนที่ควรจะรวม ตัวอย่างเช่น:

Please don't jump into the pool.

กลายเป็น

Please <s>don't</s> DO jump into the pool. 1

สำหรับคำที่ลงท้ายด้วยn'tหรือตามด้วยnot(รวมถึงcannot) การเทียบเท่าที่เป็นบวกคือทุกอย่างจนถึงดังที่กล่าวมาnot(ไม่รวมช่องว่าง) นี่คือสิ่งที่ฉันหมายถึง:

  • do not speak กลายเป็น <s>do not</s> DO speak
  • it doesn't work กลายเป็น it <s>doesn't</s> DOES work
  • we cannot กลายเป็น we <s>cannot</s> CAN

อย่างไรก็ตามมีข้อยกเว้นเล็กน้อย ตรวจสอบให้แน่ใจว่าได้รับการจัดการอย่างเหมาะสม

can't -> <s>can't</s> CAN
won't -> <s>won't</s> WILL
ain't -> <s>ain't</s> AM
shan't -> <s>shan't</s> SHALL
I'm not -> <s>I'm not</s> I AM
you're not -> <s>you're not</s> YOU ARE

รายละเอียด

  • อินพุตจะไม่มีช่องว่างใด ๆ ยกเว้นช่องว่างปกติ (ไม่มีแท็บบรรทัดใหม่ ฯลฯ )
  • ข้อมูลที่ป้อนจะไม่มีเชิงลบใด ๆ (เช่นwe can't not do this)
  • หากnotปรากฏขึ้นทันทีหลังเครื่องหมายวรรคตอนหรือเป็นส่วนหนึ่งของคำอื่นให้ปล่อยไว้
  • ตรวจสอบให้แน่ใจว่าได้เก็บข้อความต้นฉบับรวมถึงตัวอักษรตัวเล็ก / ตัวใหญ่ระหว่าง<s></s>แท็ก
  • ถ้าคุณต้องการคุณอาจจะใช้ในสถานที่ของ<strike></strike><s></s>

การทดสอบกรณี

ปัจจัยการผลิต:

I'm sorry, but you can't do that.
Driving on the beach isn't allowed.
Driving on the beach is not allowed.
Please don't jump in; I cannot imagine what might come of that.
Don't worry; we won't get into trouble.
I'm not perfect, but you're not either.
You shan't do it 'cause I ain't doin' it!
Can't we capitalize special cases?
I don't like the words can't, shan't, won't, don't, ain't, or ppcgn't.
Oh, this? It's nothing.
Tie a slipknot in the rope.
Would you like Pinot Noir?
This sentence contains none of the replacement words. Not even knot or ca't.
This sentence doesn't contain one of the replacement words.

ขาออก:

I'm sorry, but you <s>can't</s> CAN do that. 1
Driving on the beach <s>isn't</s> IS allowed. 1
Driving on the beach <s>is not</s> IS allowed. 1
Please <s>don't</s> DO jump in; I <s>cannot</s> CAN imagine what might come of that. 2
<s>Don't</s> DO worry; we <s>won't</s> WILL get into trouble. 2
<s>I'm not</s> I AM perfect, but <s>you're not</s> YOU ARE either. 2
You <s>shan't</s> SHALL do it 'cause I <s>ain't</s> AM doin' it! 2
<s>Can't</s> CAN we capitalize special cases? 1
I <s>don't</s> DO like the words <s>can't</s> CAN, <s>shan't</s> SHALL, <s>won't</s> WILL, <s>don't</s> DO, <s>ain't</s> AM, or <s>ppcgn't</s> PPCG. 7
Oh, this? It's nothing. 0
Tie a slipknot in the rope. 0
Would you like Pinot Noir? 0
This sentence contains none of the replacement words. Not even knot or ca't. 0
This sentence <s>doesn't</s> DOES contain one of the replacement words. 1

เกณฑ์การให้คะแนน

นี่คือดังนั้นรหัสที่ถูกต้องสั้นที่สุดในหน่วยไบต์ชนะ Tiebreaker ไปที่การส่งที่ถึงจำนวนไบต์สุดท้ายก่อน ผู้ชนะจะไม่ได้รับเลือกในวันจันทร์ที่ 26 ต.ค. โชคดี!


@FryAmTheEggman ใช่เว้นแต่มีบางคนที่มีมูลค่าเพิ่มในรายการ ฉันอยากให้มันสั้น แต่คุณมีข้อเสนอแนะหรือไม่?
ETHproductions

ไม่เพียงแค่ไม่ต้องการให้สิ่งนี้เดือดร้อนจาก "คุณเปลี่ยนสเป็คตอนนี้มันแย่" ซินโดรมท้าทาย: P
FryAmTheEggman

1
กรณีทดสอบที่แนะนำ:Can't we capitalize special cases?
DLosc

เราจำเป็นต้องระวังด้วยสายอักขระเช่น: Oh this? It's nothing...หรือI wonder if we'll notice any words like this??
Dom Hastings

2
หนึ่ง <strike> ไม่ได้ </strike> เพียงแปลง memes เป็นการแข่งขัน!
Jan

คำตอบ:


7

pip , 138 140 ไบต์

ใช่ว่าcannot/ knotความแตกต่างนั้นยุ่งยาก

x:"ca wo ai sha i'm you're"^sY"CAN0WILL0AM0SHALL0I AM0YOU ARE"^0OqR-`([\w']+)( no|n'|(?<=can)no)t\b`{++i"<s>".a."</s>".s.((yx@?LCb)|UCb)}s.i

อ่านบรรทัดจาก stdin, ส่งออกเป็น stdout Regex:

`([\w']+)( no|n'|(?<=can)no)t\b`

ตรงกับคำ (รวมถึง apostrophes) ตามด้วยหนึ่งในสามสิ่ง:

  • not
  • n't
  • not โดยไม่มีช่องว่างให้ครึ่งแรกของคำว่า can

-ดำเนินการบน regex ทำให้ไม่คำนึงถึงขนาดตัวพิมพ์

การแข่งขันจะถูกแทนที่ด้วยผลลัพธ์ของฟังก์ชั่นต่อไปนี้ (หมายเหตุ: ภายในฟังก์ชั่นaเป็นการแข่งขันทั้งหมดและbเป็นกลุ่มการจับภาพ 1)

{++i"<s>".a."</s>".s.((yx@?LCb)|UCb)}
 ++i                                   Increment counter
    "<s>".a."</s>"                     Return entire match wrapped in HTML tags...
                  .s.(             )   plus space, plus the following:
                           LCb         Lowercase first capture group
                        x@?            Find its index in list x of special cases (nil if
                                         not in list)
                      (y      )        Use that as index into list y of replacements
                               |UCb    If it wasn't a special case, this is nil, and we
                                         instead use uppercase(b)

iเมื่อสตริงการแก้ไขจะทำเรายังพื้นที่การส่งออกและจำนวนทดแทน


3

GNU Sed, 321 ไบต์

(รวม +1 สำหรับ-r)

:
s!(can('|no)t)([^<])!<s>\1</s> CAN\3!i
s!(won't)([^<])!<s>\1</s> WILL\2!i
s!(ain't)([^<])!<s>\1</s> AM\2!i
s!(shan't)([^<])!<s>\1</s> SHALL\2!i
s!(I'm not)([^<])!<s>\1</s> I AM\2!i
s!(you're not)([^<])!<s>\1</s> YOU ARE\2!i
t
s!(([^ .!?]+)(n't| not))([^<])!<s>\1</s> \U\2\4!i
t
h
s/1//g
s/<s>/1/g
s/[^1]//g
x
G
s/\n/ /

"การแทนที่สตริง - งานสำหรับ sed!" ฉันคิด. แต่นี่เป็นเรื่องที่ยากอย่างน่าประหลาดใจและฉันก็ยังคงสับสนกับการแทนที่ข้อความเดิม และการนับ! อย่างน้อยก็ไม่มีข้อห้ามเรื่องเอกภาพในคำถาม ...


2

Perl, 153 ไบต์

150 สคริปต์ + 3 สำหรับ -p

$c=0|s!\b((ca)nnot|([\w']+)(?: not|n't))\b!"<s>$&</s> ".uc({ai,AM,ca,CAN,wo,WILL,sha,SHALL,"i'm","I AM","you're","YOU ARE"}->{lc$+}||$+)!egi;s/
/ $c
/

ดังนั้นในขณะที่ฉันตรงกับกรณีทดสอบทั้งหมดตอนนี้ แต่ regex มีค่าฉันอย่างสุดซึ้ง ... ฉันจะคิดมัน!

ตัวอย่างผลลัพธ์:

$perl -p can.pl <<< "I'm sorry, but you can't do that.
Driving on the beach isn't allowed.
Driving on the beach is not allowed.
Please don't jump in; I cannot imagine what might come of that.
Don't worry; we won't get into trouble.
I'm not perfect, but you're not either.
You shan't do it 'cause I ain't doin' it!
Can't we capitalize special cases?
I don't like the words can't, shan't, won't, don't, ain't, or ppcgn't.
Oh, this? It's nothing.
This sentence contains none of the replacement words. Not even knot or ca't.
This sentence doesn't contain one of the replacement words.
Tie a slipknot in the rope.
Would you like Pinot Noir?
You cannot be serious\!"
I'm sorry, but you <s>can't</s> CAN do that. 1
Driving on the beach <s>isn't</s> IS allowed. 1
Driving on the beach <s>is not</s> IS allowed. 1
Please <s>don't</s> DO jump in; I <s>cannot</s> CAN imagine what might come of that. 2
<s>Don't</s> DO worry; we <s>won't</s> WILL get into trouble. 2
<s>I'm not</s> I AM perfect, but <s>you're not</s> YOU ARE either. 2
You <s>shan't</s> SHALL do it 'cause I <s>ain't</s> AM doin' it! 2
<s>Can't</s> CAN we capitalize special cases? 1
I <s>don't</s> DO like the words <s>can't</s> CAN, <s>shan't</s> SHALL, <s>won't</s> WILL, <s>don't</s> DO, <s>ain't</s> AM, or <s>ppcgn't</s> PPCG. 7
Oh, this? It's nothing. 0
This sentence contains none of the replacement words. Not even knot or ca't. 0
This sentence <s>doesn't</s> DOES contain one of the replacement words. 1
Tie a slipknot in the rope. 0
Would you like Pinot Noir? 0
You <s>cannot</s> CAN be serious\! 1

ว้าวนี่มันกะทัดรัด! ประเด็นหนึ่งที่: I'm notทำงานไม่ถูกต้อง - มันควรจะเป็นแทนI AM I'Mแต่ผมคิดว่าคุณก็ต้องมีการเปลี่ยนแปลงI'mไปi'mในรหัสที่จะแก้ไขได้
DLosc

โอ้ - ยังลองในประโยคเช่นหรือTie a slipknot in the rope. Would you like Pinot Noir?พวกเขาไม่ได้อยู่ในกรณีทดสอบ แต่ความตั้งใจของ OP คือการยกเว้นคำใด ๆ ที่ลงท้ายด้วยยกเว้นnot cannot
DLosc

@DLosc กรณีทดสอบที่ยอดเยี่ยม! ฉันไม่สามารถนึกถึงคำที่ลงท้ายด้วยอีกต่อไปnot! มันI'mเป็นเรื่องที่ไม่ดีขอบคุณสำหรับจุด!
Dom Hastings
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.