소개:
나는 한때 어렸을 때 컴파일 된 문서에 다양한 암호가 저장되어 있으며, 도전에 가장 적합하다고 생각되는 것을 선택했습니다 (너무 사소하지 않고 어렵지 않음). 대부분은 여전히 샌드 박스에 있으며, 모두 게시할지 또는 일부만 게시할지 확실하지 않습니다. 그러나 여기에서 처음으로 일을 시작합니다.
컴퓨터 암호는 주어진 텍스트를 주어진 '무작위'문자 그룹으로 암호화합니다 length
. 이러한 그룹에 숫자가 포함되어 있으면 해당 숫자를 사용하여 암호화 된 문자에 대한 자체 그룹으로 색인을 생성합니다. 그룹에 숫자가 없으면 첫 번째 문자가 사용 된 것입니다.
예를 들어, this is a computer cipher
주어진 길이로 텍스트를 암호화하고 싶다고 가정 해 봅시다 5
. 이것은 잠재적 인 출력입니다 (참고 : 아래 예에서 숫자는 1- 인덱싱 됨).
t h i s i s a c o m p u t e r c i p h e r (without spaces of course, but added as clarification)
qu5dt hprit k3iqb osyw2 jii2o m5uzs akiwb hwpc4 eoo3j muxer z4lpc 4lsuw 2tsmp eirkr r3rsi b5nvc vid2o dmh5p hrptj oeh2l 4ngrv (without spaces of course, but added as clarification)
그룹을 해독하는 방법을 설명하기 위해 몇 개의 그룹을 예로 들어 보겠습니다.
qu5dt
:이 그룹은 숫자를 포함하므로이 그룹5
의 (1 색인) 5 번째 문자는 해독 된 텍스트에 사용되는 문자t
입니다.hprit
:이 그룹에는 숫자가 포함되지 않으므로이 그룹의 첫 번째 문자는 해독 된 텍스트에 암시 적으로 사용됩니다h
.osyw2
:이 그룹에는 숫자가 포함되어 있으므로이 그룹2
의 (1 색인) 두 번째 문자는 해독 된 텍스트에 사용되는 문자s
입니다.
도전:
integer length
와 string이 주어지면 위에서 설명한대로 임의의 암호화 된 문자열을 word_to_encipher
출력하십시오 .
length
및을 지정하여 암호화 word_to_encipher
하면되므로 해독 프로그램 / 기능도 만들 필요가 없습니다. 그러나 나는 앞으로 해독에 대한 2 부 도전을 할 수있다.
도전 규칙 :
length
범위 안에 있다고 가정 할 수 있습니다[3,9]
.word_to_encipher
의지에는 글자 만 포함되어 있다고 가정 할 수 있습니다 .- 소문자 또는 대문자를 사용할 수 있습니다 (답변에 사용한 것을 적어주십시오).
- 출력, 모든 그룹 및 그룹의 숫자 위치 (있는 경우)는 균일하게 임의적 이어야합니다 . 따라서 알파벳의 모든 임의의 문자는 같은 확률로 발생합니다. 각 그룹에서 암호화 된 문자의 위치는 동일한 가능성이 있습니다. 숫자의 위치는 발생할 가능성이 동일합니다 (첫 번째 문자이고 숫자가없는 경우는 제외하고 암호화 된 문자와 동일한 위치에있을 수 없음).
- 1- 인덱스 대신 0- 인덱스 숫자를 사용할 수도 있습니다. 답에 사용한 두 가지를 적어주십시오.
- 숫자
1
(또는0
0 인덱싱 된 경우)는 출력에 절대 존재하지 않습니다. 따라서b1ndh
문자 'b'를 암호화하는 유효한 그룹이 아닙니다. 그러나b4tbw
를 Where, 유효4
암호화한다b
4 (1 인덱스의) 위치 및 다른 문자로는b
,t
,w
(동시도 포함하는 랜덤b
). 다른 가능한 유효한 그룹length
: 5 문자 'B'이다 암호화하기하기 위해abcd2
,ab2de
,babbk
,hue5b
, 등을
일반 규칙:
- 이것은 code-golf 이므로 바이트 단위의 최단 답변이 이깁니다.
코드 골프 언어가 코드 골프 언어 이외의 언어로 답변을 게시하지 못하게하지 마십시오. '모든'프로그래밍 언어에 대한 가능한 한 짧은 대답을 생각해보십시오. - 표준 규칙 은 기본 I / O 규칙으로 답변에 적용 되므로 STDIN / STDOUT, 적절한 매개 변수 및 반환 유형의 전체 프로그램과 함께 함수 / 방법을 사용할 수 있습니다. 당신의 전화.
- 기본 허점 은 금지되어 있습니다.
- 가능하면 코드 테스트 (예 : TIO ) 링크를 추가하십시오 .
- 또한 답변에 대한 설명을 추가하는 것이 좋습니다.
테스트 사례 :
Input:
Length: 5
Word to encipher: thisisacomputercipher
Possible output:
qu5dthpritk3iqbosyw2jii2om5uzsakiwbhwpc4eoo3jmuxerz4lpc4lsuw2tsmpeirkrr3rsib5nvcvid2odmh5phrptjoeh2l4ngrv
Input:
Length: 8
Word to encipher: test
Possible output:
ewetng4o6smptebyo6ontsrbtxten3qk
Input:
Length: 3
Word to encipher: three
Possible output:
tomv3h2rvege3le
abcd2
, ab2de
, babbk
모두 같은? 또한 b1akk
유효합니까?
b1akk
나는 아무 말도 것입니다. 확인하기 위해 챌린지 설명에서이를 편집합니다. 첫 번째 문자가 암호화 된 문자이면 숫자가 없어야합니다.
"a??"
676 개 가능한 결과를 가지고 있지만 "1a?"
, "?a1"
, "2?a"
, "?2a"
, only104 결과가 있습니다. 따라서이 780 개 결과 중 하나의 결과를 선택하려고하면 "암호화 된 문자의 위치"의 분포는 1 : 1 : 1이 아니라 13 : 1 : 1입니다. 그리고 저는 이것을 "균일하게 임의적 인"작동 방식으로 생각합니다.