숫자와 문자열이 주어진 암호를 생성
당신의 작업은 간단합니다. 문자열 s
과 숫자 0 <= n <= 9
를 입력으로 받으면 문자열 n
시간 의 각 문자 사이에 의사 난수 인쇄 가능 ASCII 문자를 삽입하십시오 . 의 각 문자에 대해 이러한 것을 s
거기에 n
그들 사이의 임의의 문자가. 공백을 제거해야합니다.
입력:
s
암호로 암호화 할 문자열 문구n
범위의 정수0 <= n <= 9
예:
입력:
The treasure is here
2
산출:
T ! 0 h 32 e F4 t 0i r lk e hm a 7y s # 0 u * & r * h e ! 2 i H ^ s B, h ! @ e 0) r $ h e
이것은 코드 골프 이므로 가장 짧은 코드가 승리합니다! 행운을 빌고 재미있게 보내!
답변
C #, 141131 바이트
@Geobit의 Java answer 와 매우 유사하지만 현재 더 이상 있습니다 🙁
(I,n)=>{var R=new System.Random();var o="";int i,r;foreach(var c in I)if(c>32)for(i=r=0,o+=c;i++<n;){r=R.Next(33,127);o+=(char)r;}return o;};
전체 람다 물건 :
Func<string, int, string> a = (I,n) =>
{
var R=new System.Random();
var o="";
int i;
foreach(var c in I)
if(c>32)
for(i=0,o+=c;i++<n;o+=(char)R.Next(33,127));
return o;
};
답변
05AB1E , 11 바이트
ð-vy²FžQ.RJ
설명
ð- # remove spaces from input string
v # for each char in the string
y # push the char
²F # input-2 number of times do:
žQ.R # push a random ascii character
J # join to string
답변
자바 7 132 124 바이트
String f(int n,char[]a){String o="";int i;for(char b:a)if(b>32)for(i=0,o+=b;i++<n;o+=(char)(33+Math.random()*94));return o;}
아무것도 상상할 수 없습니다. 예상했던 것처럼 이중 루프입니다. 문자열을 반복하는 외부, 무작위를 채우기 위해 내부 :
String f(int n,char[]a){
String o="";
int i;
for(char b:a)
if(b>32)
for(i=0,
o+=b;
i++<n;
o+=(char)(33+Math.random()*94));
return o;
}
답변
파이크, 12 11 9 바이트
d-FQV~KHs
d- - remove spaces from input
F - for i in ^:
QV - repeat (number) times:
~KH - random_from(printable)
s - sum(^)
OP에 따르면 후행 임의 문자가 좋습니다.
답변
옥타브, 43 바이트
@(s,n)[s(s>32);33+94*rand(n,nnz(s>32))](:)'
이것은 문자열 s
과 정수 n
를 입력으로받습니다. 옥타브의 문자열은 단순히 문자 배열입니다. 공백이 아닌 문자 s>32
가 포함 된 논리적 맵입니다 1
. 이 코드는 33에서 126 사이의 부동 소수점 숫자를 포함하는 n
행과 동일한 수의 열이 있는 행렬을 추가합니다 s(s>32)
. 암시 적으로 정수로 반올림되고 string과 연결될 때 ASCII 문자로 변환됩니다 s
. (:)'
이것을 수평 문자 배열로 직선화합니다.
답변
파이썬 2, 123 (122) 118 (114) 98 바이트
남자, 나는 바란다 random
그렇게 비싸지 않았 (그리고 우리는 공간을 필터링 할 필요가 없었다). 이제 우리는 끝에 암호 문자를 허용함으로써 크게 절약 할 수 있습니다 🙂 어쨌든, 여기에 있습니다.
from random import*
f=lambda s,n:s and(' '<s[0])*eval('s[0]'+'+chr(randint(32,126))'*n)+f(s[1:],n)
답변
자바 스크립트 (Firefox 30+), 96 바이트
(s,n)=>s.replace(/. */g,x=>x[0]+String.fromCharCode(...[for(_ of Array(n))Math.random()*95+32]))
Pure ES6는 2 바이트 더 깁니다.
(s,n)=>s.replace(/. */g,x=>x[0]+String.fromCharCode(...[...Array(n)].map(_=>Math.random()*95+32)))
슬프게도 26 바이트 더 긴 정말 멋진 접근법이 있습니다.
(s,n)=>String.raw({raw:s.split` `.join``},...[for(_ of s)String.fromCharCode(...[for(_ of Array(n))Math.random()*95+32])])