자본 암호


15

귀하의 작업은 [32..126] 범위의 인쇄 가능한 ASCII 문자로 구성된 비어 있지 않은 문자열을 해독하는 것 입니다.

문자 당 문자열 문자 읽기 :

  • 소문자로 된 문자를 발견 할 때마다 'A'로 시작하여 다음 문자를 대문자로 연결하십시오
  • 대문자로 된 문자를 발견 할 때마다 소문자로 된 문자로 바꾸십시오
  • 다른 문자는 특별한 처리가 필요하지 않으며 그대로 유지됩니다.

입력 문자열의 경우 "endlAsEBAEE":

  • eA, nB, dClD
  • 교체 Ae
  • sE
  • 교체 EBAEEsness

최종 출력은 "endlessness"입니다.

설명 및 규칙

  • 입력 문자열에는 각 소문자가 최대 한 번 포함되어야합니다. 모든 추가 인스턴스는 해당 대문자로 대체됩니다.
  • 입력 문자열이 유효합니다. 소문자와 아직 연결되지 않은 대문자는 발견되지 않습니다.
  • 대문자가 소문자와 연결되면 나중에 문자열에서 사용되거나 사용되지 않을 수 있습니다. 예를 들어, C그리고 D위의 예에서 사용되지 않습니다.
  • 이것은 이므로 바이트 단위의 최단 답변이 이깁니다!

테스트 사례

입력 :

abcd
honk! ABCD!
abrAcAdABCA
endlAsEBAEE
helCo wDrCd!
dermatoglyphics
progBamFinD AuzJles & cCdL DCKf
sphinx of black quKrtz, jOdge my vGw. K NODLM IPGZE HGF SOWBA GYVP QCV JKRX TGU.
petBr AiABD AEckBd a ABFG of AEFGlBH ABAABDs. hJw mIny AEFGLBH ABAABDM HEH ABCBD AEABD AEFG?

답변:

abcd
honk! honk!
abracadabra
endlessness
hello world!
dermatoglyphics
programming puzzles & code golf
sphinx of black quartz, judge my vow. a quick brown fox jumps over the lazy dog.
peter piper picked a peck of pickled peppers. how many pickled peppers did peter piper pick?

1
소문자 + 문장 부호 문자열을 인코딩하는이 작업의 역도 흥미로운 도전을 할 것이라고 생각합니다.
Chas Brown

답변:


8

젤리 , 8 7 바이트

fØaØA,y

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

작동 원리

fØaØA,y  Main link. Argument: s (string)

 Øa      Yield the lowercase alphabet.
f        Filter; keep only characters that appear in the lowercase alphabet.
          Call the result r.
   ØA    Yield the uppercase alphabet (u).
     ,   Pair; yield [u, r].
      y  Translate s, using the substitutions in [u, r].


3

자바 스크립트 (ES6), 62 바이트

s=>s.replace(/[A-Z]/g,c=>s.match(/[a-z]/g)[parseInt(c,36)-10])

각 대문자는 10 이하의 기본 36 값으로 변환됩니다.

그런 다음 해당 색인에있는 소문자를 찾습니다.


2

Pyth, 36 바이트

JKr1GVQI&}NG!}NH=XHNhK=tK)p?}NJ@_HNN

여기 사용해보십시오

설명

JKr1GVQI&}NG!}NH=XHNhK=tK)p?}NJ@_HNN
JKr1G                                  Let J and K be the uppercase alphabet.
     VQ                                For each character in the input...
       I&}NG!}NH         )             ... if the character is lowercase and not
                                       yet in H, ...
                =XHNhK                 ... add the letter and the next uppercase
                                       letter to H...
                      =tK              ... and move to the next uppercase letter.
                          p?}NJ@_HNN   Print either the next character or the
                                       letter it represents.


2

R , 79 바이트

function(x){s=utf8ToInt(x)
s[j]=s[s>96&s<123][s[j<-s>64&s<91]-64]
intToUtf8(s)}

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


아주 좋아요! scan(,"" 개선을 찾기 위해 애 쓰고있는 것 외에는 함수 대신 전체 프로그램 으로 사용하여 몇 바이트를 절약 할 수 있습니다 .
JayCe


2

Z80Golf , 37 바이트

00000000: 2505 cd03 8030 0176 fe7b 300c fe61 3011  %....0.v.{0..a0.
00000010: fe5b 3004 fe41 3003 ff18 e7d6 414f 0a18  .[0..A0.....AO..
00000020: f777 2318 f3                             .w#..

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

z80은 이것에 꽤 능숙합니다! 분해는 다음과 같습니다.

  dec h         ; HL = cipher write pointer
  dec b         ; BC = cipher read pointer
                ; meaning of 'A'..'Z' is written to $ff00~$ff19
next:
  call $8003    ; getchar
  jr nc, ok     ; not EOF?
  halt
ok:
  cp '{'
  jr nc, other  ; a ≥ '{'
  cp 'a'
  jr nc, lower  ; 'a' ≤ a ≤ 'z'
  cp '['
  jr nc, other  ; '[' ≤ a ≤ '`'
  cp 'A'
  jr nc, upper  ; 'A' ≤ a ≤ 'Z'
other:
  rst $38
  jr next
upper:
  sub 'A'
  ld c, a
  ld a, (bc)
  jr other
lower:
  ld (hl), a
  inc hl
  jr other

우리는 HL과 BC를 모두 $ff00범위로 가리키고에 대한 짧은 대안으로 dec사용 하지만 그렇지 않으면 많은 속임수가 없습니다.rst $38call $8000


1

망막 , 25 바이트

~["T`L`"|""L$`[a-z]
$&-$&

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

[a-z]

소문자를 일치시킵니다.

$`
$&-$&

각 문자를 축 퇴한 범위로 바꿉니다. (이는 나중에 음역이 문자 클래스로 취급하는 것을 방지합니다. 일부 소문자는 백 슬래시 뒤에 특별한 의미가 있으므로 백 슬래시는 사용할 수 없습니다.)

["T`L`"|""L

줄 바꿈 기호가없고 앞뒤로 변성 범위를 나열하십시오 T`L`.

~

원래 입력에서 음역 프로그램 결과를 평가하십시오.






당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.