Тебе нравится тхэквондо?

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
Weedoze
источник
1
без учета регистра? и это место, необходимое раньше*side kick*
LiefdeWen
10
@LiefdeWen Пространство очевидно необходимо. Как вы можете сделать side kickбез пробела между вами и вашим противником?
Weedoze
1
Как корейский парень, я одобряю этот вызов. Но я должен сказать, что Geup(급) на самом деле не означает «студент». Haksaeng(학생) будет лучше. Кроме того, вы должны использовать Sabeom nim(사범님) вместо Gyosa nim(교사 님), когда дело доходит до инструктора по боевым искусствам, независимо от мастерства (слово Gyobeom nim(교범 님) существует, но оно используется редко).
JungHwan Мин
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().
manatwork
Неясно, что «Вы должны вывести это измененное предложение в виде строки». на самом деле означает, но учитывая, что боковой удар всегда должен быть добавлен, я бы сказал, что предложение всегда будет меняться, поэтому что-то всегда должно быть выведено. Например, в случае ввода типа «Я кодер, нет тхэквондо».
manatwork
@ Manatwork Это, скажем, действительный вклад. Под действительным вводом я предполагаю ввод с заголовком. Ваш счет с str_ireplaceбыл прав
Йорг Хюльсерманн
1
Там , кажется, достаточно «NIM» на сумму переменной: [$a=Gwanjang.$n=" nim",$a,Sabeom.$n,Gyosa.$n,….
manatwork
@manatwork Да, это экономит два байта. Я пробовал версию с дополнительной, strtrно она ничего не экономит
Йорг Хюльсерманн
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();
    }
}
TheLethalCoder
источник
Мы должны спросить, *SIDE KICK*можно ли в такой форме, в примерах она была в нижнем регистре
г-н Xcoder
@ Mr.Xcoder В комментарии к OP говорится, что он нечувствителен к регистру, в любом случае это не изменение количества байтов. Также удар в верхнем регистре более мощный, поэтому его следует разрешить ...
TheLethalCoder
1
Да, просто
сделаю
0

tcl, 212

puts "[string map -nocase {President Gwanjang\ nim Founder Gwanjang\ nim Master\ instructor Sabeom\ nim Teacher Gyosa\ nim Black\ Belt Dan Student Geup Color\ Belt Geup Master\ level Godanja} $argv], *side kick*"

демонстрация

sergiol
источник
@manatwork: исправлено.
sergiol
0

Python 3 , 281 байт

import re
x=input();a="Gwanjang";b=" nim";c="Geup";d="Master";e=" Belt"
for i in range(8):x=re.sub("(?i)"+["President","Founder",d+" instructor","Teacher","Black"+e,"Student","Color"+e,d+" level"][i],[a+b,a+b,"Sabeom"+b,"Gyosa"+b,"Dan",c,c,"Godanja"][i],x)
print(x+", *side kick*")

Попробуйте онлайн!

officialaimm
источник
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
andrewarchi
источник
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*')

darrylyeo
источник