คุณชอบเทควันโดไหม?


9

Choi Hong Hiเสียชีวิตในวันที่ 15 มิถุนายน 2002 ในวัย 83 เกียรติเขาก่อตั้งเทควันโด

15 ปีหลังจากการตายของเขาฉันอยากเป็นอาจารย์เทควันโด นี่เป็นเวลาของฉันที่จะเปล่งประกาย!

งาน

รับสตริงคุณควรส่งออกเวอร์ชันเทควันโด

กฎระเบียบ

  • คุณจะได้รับสตริง / ประโยคที่ไม่ว่างเปล่าโดยอินพุตที่ถูกต้องใด ๆ
  • คุณต้องแทนที่แต่ละชื่อเรื่อง (ตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) โดยเทียบเท่าการแปลแบบโรมัน
  • คุณต้องเพิ่ม, *side kick*ตอนท้ายของประโยคเพราะฉันชอบที่จะเตะด้านข้าง
  • คุณต้องแสดงผลประโยคที่เปลี่ยนแปลงนี้เป็นสตริง
  • นี่คือ คุณควรตั้งเป้าหมายที่จะลดจำนวนคำตอบให้เหลือน้อยที่สุด

ตัวอย่าง

"I am a Student and I do Taekwondo twice a week" 
  => "I am a Geup and I do Taekwondo twice a week, *side kick*"

"I am a Teacher willing to be a President" 
  => "I am a Gyosa nim willing to be a Gwanjang nim, *side kick*"

รายการของชื่อ

English             =>  Revised Romanization
============================================
President           =>  Gwanjang nim
Founder             =>  Gwanjang nim
Master instructor   =>  Sabeom nim
Teacher             =>  Gyosa nim
Black Belt          =>  Dan
Student             =>  Geup
Color Belt          =>  Geup
Master level        =>  Godanja

1
กรณีตาย? และเป็นพื้นที่ที่ต้องการก่อน*side kick*
LiefdeWen

10
@LiefdeWen เห็นได้ชัดว่ามีความจำเป็นต้องใช้พื้นที่ คุณจะทำแบบside kickไม่มีช่องว่างระหว่างคุณกับคู่ต่อสู้ได้อย่างไร?
Weedoze

1
ในฐานะผู้ชายเกาหลีฉันเห็นด้วยกับความท้าทายนี้ แต่ฉันต้องบอกว่าGeup(급) ไม่ได้แปลว่า 'นักเรียน' จริงๆ Haksaeng(학생) จะดีกว่า นอกจากนี้คุณจะใช้Sabeom nim(사범님) แทนGyosa nim(교사님) เมื่อพูดถึงผู้สอนศิลปะการต่อสู้โดยไม่คำนึงถึงความเชี่ยวชาญ (คำGyobeom nim((님) มีอยู่ แต่ไม่ค่อยได้ใช้)
JungHwan Min

2
side kickแตกต่างจากside-kick
sergiol

1
@sergiol อัปเดตคำถามแล้ว
Weedoze

คำตอบ:



3

PHP , 241 ไบต์

<?=preg_replace(["#\b(President|Founder)\b#i","#\bMaster instructor\b#i","#\bTeacher\b#i","#\bBlack Belt\b#i","#\b(Studen|Color Bel)t\b#i","#\bMaster level\b#i"],[Gwanjang.$n=" nim",Sabeom.$n,Gyosa.$n,Dan,Geup,Godanja],"$argn, *side-kick*");

ลองออนไลน์!


1
str_ireplace()ขณะที่ผมนับก็จะสั้นลงด้วย
จัดการ

ไม่ชัดเจนว่า“ คุณต้องเอาท์พุทประโยคที่ถูกเปลี่ยนนี้เป็นสตริง” ที่จริงแล้วหมายถึง แต่เมื่อได้รับการเตะจากด้านข้างเสมอฉันจะบอกว่าประโยคนั้นจะเปลี่ยนไปตลอดเวลาดังนั้นบางสิ่งที่ควรออกมา ตัวอย่างเช่นในกรณีของการป้อนข้อมูลเช่น "ฉัน coder ไม่มีเทควันโด"
จัดการ

@ manatwork มีการกล่าวว่าอินพุตที่ถูกต้อง ภายใต้อินพุตที่ถูกต้องฉันถือว่าอินพุตที่มีหัวเรื่อง การนับของคุณstr_ireplaceถูกต้อง
JörgHülsermann

1
ดูเหมือนจะมี“ นิม” เพียงพอที่จะให้ความรู้สึกกับตัวแปร: [$a=Gwanjang.$n=" nim",$a,Sabeom.$n,Gyosa.$n,….
จัดการ

@ การจัดการงานใช่มันช่วยประหยัดสองไบต์ ฉันลองใช้รุ่นเพิ่มเติมstrtrแต่ไม่ช่วยอะไรเลย
JörgHülsermann

2

C #, 262 ไบต์

s=>{for(int i=0;i<8;)s=s.ToUpper().Replace("PRESIDENT|FOUNDER|MASTER INSTRUCTOR|TEACHER|BLACK BELT|MASTER LEVEL|STUDENT|COLOR BELT".Split('|')[i],(i<2?"GWANJANG":i>3?"GEUP":"SABEOM|GYOSA|DAN|GODANJA".Split('|')[i-2])+(i++<4?" NIM":""));return s+", *SIDE KICK*";}

เวอร์ชันเต็ม / ฟอร์แมต:

class Program
{
    static void Main(string[] args)
    {
        System.Func<string, string> f = s =>
        {
            for (int i = 0; i < 8;)
                s = s.ToUpper().Replace("PRESIDENT|FOUNDER|MASTER INSTRUCTOR|TEACHER|BLACK BELT|MASTER LEVEL|STUDENT|COLOR BELT".Split('|')[i],
                                        (i < 2 ? "GWANJANG"
                                               : i > 3 ? "GEUP"
                                                       : "SABEOM|GYOSA|DAN|GODANJA".Split('|')[i-2])
                                        + (i++ < 4 ? " NIM" : ""));

            return s + ", *SIDE KICK*";
        };

        System.Console.WriteLine(f("I am a Student and I do Taekwondo twice a week"));
        System.Console.WriteLine(f("I am a Teacher willing to be a President"));

        System.Console.ReadLine();
    }
}

เราควรถามว่า*SIDE KICK*สามารถอยู่ในรูปแบบนี้ได้หรือไม่ในตัวอย่างที่ลดระดับลง
Mr. Xcoder

@ Mr.Xcoder ความคิดเห็นที่ OP บอกว่ามันไม่ตรงตามตัวพิมพ์ใหญ่ - เล็กไม่ว่าจะเป็นจำนวนไบต์ก็ตาม นอกจากนี้ยังเตะในกรณีบนมีประสิทธิภาพมากขึ้นดังนั้นจึงควรได้รับอนุญาต ...
TheLethalCoder

1
ใช่เพียงแค่ทำคำพูดนั้น ... คำตอบนี้คือความตายอยู่แล้ว :))
นาย Xcoder




0

JavaScript (ES6), 251 ไบต์

a=>a.replace(RegExp(b='president|founder|master instructor|teacher|black belt|student|color belt|master level','gi'),c=>((d='Gwanjang nim|')+d+'Sabeom nim|Gyosa nim|Dan|Geup|Geup|Godanja').split`|`[b.split`|`.indexOf(c.toLowerCase())])+', *side kick*'

ลองออนไลน์!

นี่ไม่กะทัดรัดเท่าที่ควรเนื่องจาก JavaScript มีความละเอียดมาก แต่เป็นคำถามที่ยอดเยี่ยม ฉันรู้จักเงื่อนไขเหล่านี้เป็นส่วนใหญ่เนื่องจากฉันเป็นด่านที่ 2 ในเทควันโด

Explanaion

a=>
  a.replace(                                    // Replace on input string
    RegExp(                                     // Regex matching English phrases
      b='president|founder|master instructor|teacher|black belt|student|color belt|master level',
      'gi'                                      // Match all, case insensitive
    ),
    c=>
      ((d='Gwanjang nim|')+d+                   // Duplicate string portion
        'Sabeom nim|Gyosa nim|Dan|Geup|Geup|Godanja') // Add remaining phrases
      .split`|`                                 // Split into array by pipe
        [b.split`|`.indexOf(c.toLowerCase())])  // Access Korean phrase by corresponding index of matched English phrase
      +', *side kick*'                          // I like to do side kicks

0

JavaScript (ES6), 233 ไบต์

s=>(btoa`>·¬×§·mÁ©ãjx4)µ§uêö§©àÒx¦ÔƬµêô{-®ç-¢½i·¨IâTÞiÈ^¯a²¢Æ´)µV@^Ýj}R¶ç^Ýzêu
h¯@^Ýzêu1«-z½%z÷¥ØjjxÚ`.split(0).join` `.split`1`.map(d=>([a,b]=d.split(/2+/),s=s.replace(RegExp(a,'gi'),b))),s+', *side kick*"')


JavaScript (ES6), 243 ไบต์

s=>(`President${A=':Gwanjang nim|'}Founder${A}Master instructor:Sabeom nim|Teacher:Gyosa nim|Black Belt:Dan|Student:Geup|Color Belt:Geup|Master level:Godanja`.split`|`.map(r=>([a,b]=r.split`:`,s=s.replace(RegExp(a,'gi'),b))),s+', *side kick*')

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