Você gosta de Taekwondo?

9

Choi Hong Hi morreu em 15 de junho de 2002, com a idade de 83 anos. Fundou o Taekwondo .

15 anos após sua morte, eu gostaria de ser um mestre de Taekwondo. Esta é a minha hora de brilhar!

Tarefa

Dada uma string, você deve produzir uma versão do Taekwondo .

Regras

  • Você receberá uma sequência / frase não vazia por qualquer entrada válida
  • Você deve substituir cada título (sem distinção entre maiúsculas e minúsculas) pelo equivalente à romanização revisada .
  • Você deve adicionar , *side kick*no final da frase porque eu gosto de fazer chutes laterais.
  • Você deve gerar esta frase alterada como uma sequência.
  • Este é um você deve procurar minimizar a contagem de bytes de sua resposta

Exemplos

"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*"

Lista de títulos

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
fonte
11
insensível a maiúsculas? e é um espaço necessário antes*side kick*
LiefdeWen
10
@LiefdeWen O espaço é obviamente necessário. Como você pode fazer um side kicksem espaço entre você e seu oponente?
precisa saber é o seguinte
11
Como coreano, eu aprovo esse desafio. Mas devo dizer que Geup(급) não significa realmente 'aluno'. Haksaeng(학생) seria melhor. Além disso, você usaria Sabeom nim(사범님) em vez de Gyosa nim(교사 님) quando se trata de instrutor de artes marciais, independentemente do domínio (a palavra Gyobeom nim(교범 님) existe, mas raramente é usada).
JungHwan Min
2
side kické diferente deside-kick
sergiol 15/17
11
@sergiol Pergunta atualizada
Weedoze 15/17

Respostas:

2

Retina , 154 bytes

i(`president|founder
Gwanjang_
master instructor
Sabeom_
teacher
Gyosa_
black belt
Dan
student|color belt
Geup
master level
Godanja
_
 nim
$
, *side kick*

Experimente online!

Okx
fonte
3

PHP , 241 bytes

<?=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*");

Experimente online!

Jörg Hülsermann
fonte
11
Pelo que conto, seria mais curto com str_ireplace().
manatwork
Não está claro o que "Você deve exibir esta frase alterada como uma sequência". na verdade significa, mas, dado que o chute lateral sempre deve ser adicionado, eu diria que a frase sempre mudará, portanto algo sempre deve ser produzido. Por exemplo, no caso de entradas como "Me coder, no Taekwondo".
manatwork
@manatwork É dizer entrada válida. Sob entrada válida, assumo uma entrada com um título. Sua contagem com str_ireplaceestava certa
Jörg Hülsermann 15/06
11
Não parece ser suficiente “nim” a pena uma variável: [$a=Gwanjang.$n=" nim",$a,Sabeom.$n,Gyosa.$n,….
manatwork
@manatwork Sim, ele salva dois bytes. Eu tentei uma versão com adicional strtrmas poupa nada
Jörg Hülsermann
2

C #, 262 bytes

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*";}

Versão completa / formatada:

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
fonte
Deveríamos perguntar se *SIDE KICK*pode estar desta forma, nos exemplos em letras minúsculas.
Sr. Xcoder 15/17
@ Mr.Xcoder O comentário sobre o OP diz que não diferencia maiúsculas de minúsculas, de qualquer forma, não é uma alteração na contagem de bytes. Também um pontapé em maiúsculas é mais poderoso por isso deve ser permitido ...
TheLethalCoder
11
Sim, basta fazer essa observação ... Esta resposta é letal de qualquer maneira :))
Mr. Xcoder
1

Retina , 163 bytes

i`President|Founder
Gwanjang¶
i`Master instructor
Sabeom¶
i`Teacher
Gyosa¶
i`Black Belt
Dan
i`Student|Color Belt
Geup
i`Master level
Godanja
¶
 nim
$
, *side kick*

Experimente online!

ovs
fonte
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*"

demonstração

sergiol
fonte
@ manatwork: fixo.
sergiol 15/06
0

Python 3 , 281 bytes

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

Experimente online!

officialaimm
fonte
0

JavaScript (ES6), 251 bytes

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

Experimente online!

Isso não é tão compacto quanto poderia ser, pois o JavaScript é muito detalhado, mas é uma ótima pergunta. Eu reconheci a maioria desses termos como eu sou o segundo Dan Black Belt no Taekwondo.

Explicação

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
fonte
0

JavaScript (ES6), 233 bytes

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 bytes

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
fonte