¿Te gusta el taekwondo?

9

Choi Hong Hi murió el 15 de junio de 2002 a la honorable edad de 83 años. Fundó Taekwondo .

15 años después de su muerte, me gustaría ser un maestro de Taekwondo. Este es mi momento para brillar!

Tarea

Dada una cadena, debe generar una versión de Taekwondo .

Reglas

  • Recibirá una cadena / oración no vacía por cualquier entrada válida
  • Debe reemplazar cada título (sin distinción entre mayúsculas y minúsculas) por el equivalente de romanización revisado .
  • Debes agregar , *side kick*al final de la oración porque me gusta hacer patadas laterales.
  • Debe generar esta oración modificada como una cadena.
  • Este es un que debe apuntar para minimizar el recuento de bytes de su respuesta

Ejemplos

"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
fuente
1
insensible a mayúsculas y minúsculas? y es un espacio necesario antes*side kick*
LiefdeWen
10
@LiefdeWen El espacio es obviamente necesario. ¿Cómo puedes hacer un side kicksin espacio entre tú y tu oponente?
Weedoze
1
Como coreano, apruebo este desafío. Pero debo decir que Geup(급) realmente no significa 'estudiante'. Haksaeng(학생) sería mejor. Además, Sabeom nimusarías (사범님) en lugar de Gyosa nim(교사 님) cuando se trata de un instructor de artes marciales, independientemente de la maestría (La palabra Gyobeom nim(교범 님) existe, pero rara vez se usa).
JungHwan Min
2
side kickes diferente deside-kick
sergiol
1
@sergiol Pregunta actualizada
Weedoze

Respuestas:

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*

Pruébalo en línea!

Okx
fuente
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*");

Pruébalo en línea!

Jörg Hülsermann
fuente
1
Según cuento, sería más corto con str_ireplace().
manatwork
No está claro qué "debe generar esta oración modificada como una cadena". en realidad significa, pero dado que la patada lateral siempre debe agregarse, diría que la oración siempre cambiará, por lo que siempre se debe emitir algo. Por ejemplo, en caso de entrada como "Me codificador, no Taekwondo".
manatwork
@manatwork Se dice entrada válida. Bajo entrada válida, supongo una entrada con un título. Tu cuenta str_ireplacefue correcta
Jörg Hülsermann
1
No parece ser suficiente “nim” que vale la pena una variable: [$a=Gwanjang.$n=" nim",$a,Sabeom.$n,Gyosa.$n,….
manatwork
@manatwork Sí, ahorra dos bytes. He probado una versión adicional strtrpero no ahorra 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*";}

Versión completa / formateada:

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
fuente
Deberíamos preguntar si *SIDE KICK*puede estar en esta forma, en los ejemplos en minúscula
Sr. Xcoder
@ Mr.Xcoder El comentario sobre el OP dice que no distingue entre mayúsculas y minúsculas, de cualquier manera no es un cambio en el recuento de bytes. También una patada en mayúscula es más poderosa, por lo que debería permitirse ...
TheLethalCoder
1
Sí, solo haciendo ese comentario ... Esta respuesta es letal de todos modos :))
Sr. 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*

Pruébalo en línea!

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

manifestación

sergiol
fuente
@manatwork: arreglado.
sergiol
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*")

Pruébalo en línea!

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

Pruébalo en línea!

Esto no es tan compacto como podría ser, ya que JavaScript es muy detallado, pero es una gran pregunta. Reconocí la mayoría de estos términos, ya que soy un segundo Dan Black Belt en Taekwondo.

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
fuente
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
fuente