시계 (음역) 암호 a

소개:

나는 한때 어렸을 때 컴파일 된 문서에 다양한 암호가 저장되어 있으며, 도전에 가장 적합하다고 생각되는 것을 선택했습니다 (너무 사소하지 않고 어렵지 않음). 대부분은 여전히 ​​샌드 박스에 있으며, 모두 게시할지 또는 일부만 게시할지 확실하지 않습니다. 다음은 세 번째로 가장 쉬운 방법입니다 ( 이전에 게시 한 Computer CipherTrifid Cipher 이후 ).


Clock Cipher에서는 다음 이미지를 사용하여 텍스트를 암호화합니다.

여기에 이미지 설명을 입력하십시오
따라서 다음과 같은 문장은 다음과 같습니다 this is a clock cipher.

t  h i s     i s     a     c l  o  c k     c i p  h e r    (without additional spaces of course, but added as clarification)
19:7:8:18:00:8:18:00:AM:00:2:11:14:2:10:00:2:8:15:7:4:17

도전:

문자열이 주어지면 sentence_to_encipher위에서 설명한 것처럼 암호화하십시오.

도전 규칙 :

  • 당신은 sentence_to_encipher문자와 공백만을 포함 한다고 가정 할 수 있습니다 .
  • 소문자 또는 대문자를 사용할 수 있습니다 (답변에 사용한 것을 적어주십시오).
  • 당신은 한 자리 암호화 된 문자에 대한 앞에 0을 추가 할 수 없습니다 b를 통해 j,하지만이 명 제로는 00공간에 대한 필수입니다.
  • :구분 기호로 사용해야 하며 추가 선행 또는 후행 :이 허용되지 않습니다.
  • 당신은 사용 소문자로 허용 am하고 pm대신 대문자의 AMPM한이 일관된으로.

일반 규칙:

  • 이것은 이므로 바이트 단위의 최단 답변이 이깁니다.
    코드 골프 언어가 코드 골프 언어 이외의 언어로 답변을 게시하지 못하게하십시오. ‘모든’프로그래밍 언어에 대한 가능한 한 짧은 대답을 생각해보십시오.
  • 표준 규칙기본 I / O 규칙으로 답변에 적용 되므로 STDIN / STDOUT, 적절한 매개 변수 및 반환 유형의 전체 프로그램과 함께 함수 / 방법을 사용할 수 있습니다. 당신의 전화.
  • 기본 허점 은 금지되어 있습니다.
  • 가능하면 코드 테스트 (예 : TIO ) 링크를 추가하십시오 .
  • 또한 답변에 대한 설명을 추가하는 것이 좋습니다.

테스트 사례 :

Input:  "this is a clock cipher"
Output: "19:7:8:18:00:8:18:00:AM:00:2:11:14:2:10:00:2:8:15:7:4:17"

Input:  "test"
Output: "19:4:18:19"

Input:  "what time is it"
Output: "22:7:AM:19:00:19:8:12:4:00:8:18:00:8:19"

Input:  "acegikmoqsuwy bdfhjlnprtvxz"
Output: "AM:2:4:6:8:10:12:14:16:18:20:22:24:00:1:3:5:7:9:11:13:15:17:19:21:23:PM"

Input:  "easy peazy"
Output: "4:AM:18:24:00:15:4:AM:PM:24"


답변

파이썬 2 , 74 72 바이트

lambda s:':'.join(['AM','PM','00',`ord(c)-97`]['az '.find(c)]for c in s)

온라인으로 사용해보십시오!

입력을 모두 소문자로 사용


답변

05AB1E , 22 21 바이트

„AM24L„PM00)˜Að«s‡':ý

온라인으로 사용해보십시오!
또는 테스트 스위트

일부 대체 21 바이트 솔루션 :

':ýAð«24L„AMš„PMª00ª‡
00„AM24L„PM)˜AIk>è':ý

답변

펄 6 , 47 바이트

*.ords>>.&{<<00 AM{1..24}PM>>[$_%32]}.join(":")

온라인으로 사용해보십시오!

익명 어떤 경우 든 문자열을 취하여 암호화 된 문자열을 반환하는 람다.

설명:

*.ords>>.&{                         } # Map the ordinal values to
           <<              >>[$_%32]  # The index in the list
              00 AM{1..24}PM  # 00, AM, the numbers 1 to 24 and PM
                                     .join(":")   # And join with colons

답변

Pyth, 25 바이트

j\:m@+++"AM"S24"PM""00"xG

여기 에서 온라인으로 시도 하거나 모든 테스트 사례를 한 번에 확인 하십시오 .

j\:m@+++"AM"S24"PM""00"xGdQ   Implicit: Q=eval(input()), G=lowercase alphabet
                              Trailing dQ inferred
            S24               [1-24]
       +"AM"                  Prepend "AM"
      +        "PM"           Append "PM"
     +             "00"       Append "00" - this is the dictionary
   m                      Q   Map each element of Q, as d, using:
                       xGd      Get the index of d in G, -1 if not present (i.e. space)
    @                           Get the element from the dictionary at the above index
j\:                           Join the result on ":", implicit print

답변

자바 스크립트 (Node.js) , 72 바이트

소문자로 입력합니다.

s=>[...s].map(c=>c<1?'00':(x=Buffer(c)[0]-1&31)>24?'PM':x||'AM').join`:`

온라인으로 사용해보십시오!


답변

자바 (JDK) , 95 바이트

s->{int a=0;for(var c:s)System.out.print((a++<1?"":":")+(c<33?"00":c<66?"AM":c>89?"PM":c-65));}

온라인으로 사용해보십시오!

크레딧

  • Kevin Cruijssen 덕분에 -1 바이트

답변

C # (Visual C # Interactive Compiler) , 70 바이트

s=>string.Join(":",s.Select(a=>a<33?"00":a<66?"AM":a>89?"PM":a%65+""))

입력을 소문자 문자열로받습니다. 먼저 문자가 공백인지 확인하고 공백이면로 변환합니다 00. 다음으로, 문자가 A인지 확인하고로 변환합니다 AM. Z를 다시 확인하고있는 경우 Z로 변환합니다 PM. 마지막으로, 문자가 모든 검사를 통과하면 알파벳 순서 -1로 변환됩니다.

@dana 덕분에 -2 바이트

온라인으로 사용해보십시오!

// Input taking a string
s =>
// Join the following IEnumerable<char> with a ":" character
string.Join(":",
// Map all the characters in the string
s.Select(a =>
// Is the char less than 33, aka a space?
a < 33 ?
// If so, it's a "00"
"00"
// Else, is this an 'A'?
: a < 66 ?
// If so, convert it to "AM"
"AM" :
// If it's not 'A' or a space, could it be a 'Z'?
a > 89 ?
// If it is, turn the character into "PM"
"PM" :
// If it fails all of the checks above, get the characters position in the alphabet and subtract one from that.
a % 65 + ""))