Вам подобається тхеквондо?


9

Чой Хонг Привіт помер 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().
манатура

Незрозуміло, що "Ви повинні вивести це змінене речення як рядок". насправді означає, але, враховуючи бічний удар, завжди слід додавати, я б сказав, що речення завжди буде змінюватися, тому щось завжди повинно виводитися. Наприклад, у випадку введення типу "Me coder, no Taekwondo".
манатура

@manatwork Це правдоподібний ввід. Під правильним введенням я припускаю введення з заголовком. Ваш граф str_ireplaceбув правильним
Йорг Гюльсерманн

1
Там , здається, досить «NIM» на суму змінної: [$a=Gwanjang.$n=" nim",$a,Sabeom.$n,Gyosa.$n,….
манатура

@manatwork Так, це зберігає два байти. Я спробував версію з додатковою, strtrале це нічого не економить
Jörg Hü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 У коментарі до ОП говориться, що це нечутливе до регістру, так чи інакше це не зміна кількості байтів. Також удар у верхній регістр є більш потужним, тому його слід дозволити ...
TheLethalCoder

1
Так, лише роблячи це зауваження ... Ця відповідь все
одно




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 настільки багатослівний, але це чудове питання. Я визнав більшість цих термінів, оскільки я є другою стрічкою Чорного поясу Дана в тхеквондо.

Пояснення

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*')

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.