길이가 N 인 임의의 영숫자 문자열 생성


30

주어진 길이로 영숫자 만 허용되는 임의의 문자열을 생성하는 가장 짧은 방법은 무엇입니까?

  • 임의의 문자열의 예 : N = 9 인 경우 출력은 aZua7I0Lk
  • 주어진 길이 N은 항상 0보다 크다고 가정 할 수 있습니다.
  • 필요한 경우 N의 최대 값으로 256을 가정 할 수 있지만 N의 한계가 더 높고 여전히 계산 시간이 빠른 솔루션이 선호됩니다.
  • 허용되는 문자 : 0-9, az 및 AZ
  • 출력 문자열에서 문자가 두 번 이상 나타날 수 있습니다
  • 가능한 모든 문자열은 (언어 난수 생성기의 정확도에 따라) 동일해야합니다.

1
N의 최대 값을 가정 할 수 있습니까?
JAD

답변:


4

젤리 , 4 바이트

ØBṗX

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

설명

ØBṗX
ØB     All letters (uppercase and lowercase) and digits
  ṗ    Cartesian power with {the input}
   X   Select a random possibility

데카르트 힘은 기본적으로 주어진 요소 집합으로 구성 될 수있는 주어진 길이의 모든 목록을 생성합니다. 그것이 바로 여기에 필요한 것입니다.


UTF-8 문자가 포함되어 있다면 실제로 4 바이트 일 수 있습니까? 하나의 UTF-8 문자는 하나 이상의 바이트 이상일 수 있습니다.
m13r

m13r 젤리는 이러한 모든 단일 바이트 문자입니다 자신의 코드 페이지를 사용 @
FlipTack

13

택시 , 2577 바이트

Go to Post Office:w 1 l 1 r 1 l.Pickup a passenger going to The Babelfishery.Go to The Babelfishery:s 1 l 1 r.Pickup a passenger going to Sunny Skies Park.Go to Sunny Skies Park:n 1 l 1 l 1 r.[a]Go to Heisenberg's:n 1 r 1 r 3 r.Pickup a passenger going to Cyclone.Go to Go More:n 1 l 3 l 3 l.Go to Starchild Numerology:e 2 r.62 is waiting at Starchild Numerology.Pickup a passenger going to Cyclone.Go to Cyclone:e 1 l 2 r.Pickup a passenger going to What's The Difference.Pickup a passenger going to Divide and Conquer.Pickup a passenger going to Divide and Conquer.Go to Divide and Conquer:n 2 r 2 r 1 r.Pickup a passenger going to Trunkers.Go to Trunkers:e 1 r 3 r 1 l.Pickup a passenger going to Multiplication Station.Go to Cyclone:w 2 r.Pickup a passenger going to Multiplication Station.Go to Multiplication Station:s 1 l 2 r 4 l.Pickup a passenger going to What's The Difference.Go to What's The Difference:n 2 l 1 r 3 l.Pickup a passenger going to Addition Alley.Go to Starchild Numerology:e 1 r 3 l 2 r.1 is waiting at Starchild Numerology.63 is waiting at Starchild Numerology.Pickup a passenger going to Addition Alley.Pickup a passenger going to The Underground.Go to Addition Alley:e 1 l 2 r 3 r 1 r.Pickup a passenger going to Joyless Park.Go to Writer's Depot:n 1 l 1 l.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789- is waiting at Writer's Depot.Pickup a passenger going to Chop Suey.Go to Joyless Park:n 3 r 2 r 2 l.Go to Chop Suey:w 1 r 1 r 1 l.[b]Pickup a passenger going to Narrow Path Park.Go to Narrow Path Park:n 1 l 1 r 1 l.Go to The Underground:e 1 r.Switch to plan "c" if no one is waiting.Pickup a passenger going to The Underground.Go to Fueler Up:s.Go to Chop Suey:n 3 r 1 l.Switch to plan "b".[c]Go to Joyless Park:n 1 r.Pickup a passenger going to The Underground.Go to Narrow Path Park:w 1 r 3 l.[d]Pickup a passenger going to KonKat's.Go to KonKat's:e 1 r.Pickup a passenger going to KonKat's.Go to The Underground:s.Switch to plan "e" if no one is waiting.Pickup a passenger going to The Underground.Go to Fueler Up:s.Go to Narrow Path Park:n 4 l.Switch to plan "d".[e]Go to KonKat's:n.Pickup a passenger going to Riverview Bridge.Go to Riverview Bridge:n 1 l.Go to Narrow Path Park:e 1 l 1 r.Pickup a passenger going to Post Office.Go to Post Office:e 1 r 4 r 1 l.Go to Sunny Skies Park:s 1 r 1 l 1 r.Pickup a passenger going to The Underground.Go to The Underground:n 1 r 1 r 2 r.Switch to plan "f" if no one is waiting.Pickup a passenger going to Sunny Skies Park.Go to Sunny Skies Park:n 3 l 2 l 1 l.Switch to plan "a".[f]

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

택시입니다 슈퍼 이 만들어 없습니다하지만 당신은 그것을 할 수 있습니다! 골프화되지 않은 버전 아래에서 무슨 일이 일어나고 있는지 설명하려고 노력할 것입니다.

Go to Post Office: west 1st left 1st right 1st left.
Pickup a passenger going to The Babelfishery.
Go to The Babelfishery: south 1st left 1st right.
Pickup a passenger going to Sunny Skies Park.
Go to Sunny Skies Park: north 1st left 1st left 1st right.
[a]
Go to Heisenberg's: north 1st right 1st right 3rd right.
Pickup a passenger going to Cyclone.
Go to Go More: north 1st left 3rd left 3rd left.
Go to Starchild Numerology: east 2nd right.
62 is waiting at Starchild Numerology.
Pickup a passenger going to Cyclone.
Go to Cyclone: east 1st left 2nd right.
Pickup a passenger going to What's The Difference.
Pickup a passenger going to Divide and Conquer.
Pickup a passenger going to Divide and Conquer.
Go to Divide and Conquer: north 2nd right 2nd right 1st right.
Pickup a passenger going to Trunkers.
Go to Trunkers: east 1st right 3rd right 1st left.
Pickup a passenger going to Multiplication Station.
Go to Cyclone: west 2nd right.
Pickup a passenger going to Multiplication Station.
Go to Multiplication Station: south 1st left 2nd right 4th left.
Pickup a passenger going to What's The Difference.
Go to What's The Difference: north 2nd left 1st right 3rd left.
Pickup a passenger going to Addition Alley.
Go to Starchild Numerology: east 1st right 3rd left 2nd right.
1 is waiting at Starchild Numerology.
63 is waiting at Starchild Numerology.
Pickup a passenger going to Addition Alley.
Pickup a passenger going to The Underground.
Go to Addition Alley: east 1st left 2nd right 3rd right 1st right.
Pickup a passenger going to Joyless Park.
Go to Writer's Depot: north 1st left 1st left.
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789- is waiting at Writer's Depot.
Pickup a passenger going to Chop Suey.
Go to Joyless Park: north 3rd right 2nd right 2nd left.
Go to Chop Suey: west 1st right 1st right 1st left.
[b]
Pickup a passenger going to Narrow Path Park.
Go to Narrow Path Park: north 1st left 1st right 1st left.
Go to The Underground: east 1st right.
Switch to plan "c" if no one is waiting.
Pickup a passenger going to The Underground.
Go to Fueler Up: south.
Go to Chop Suey: north 3rd right 1st left.
Switch to plan "b".
[c]
Go to Joyless Park: north 1st right.
Pickup a passenger going to The Underground.
Go to Narrow Path Park: west 1st right 3rd left.
[d]
Pickup a passenger going to KonKat's.
Go to KonKat's: east 1st right.
Pickup a passenger going to KonKat's.
Go to The Underground: south.
Switch to plan "e" if no one is waiting.
Pickup a passenger going to The Underground.
Go to Fueler Up: south.
Go to Narrow Path Park: north 4th left.
Switch to plan "d".
[e]
Go to KonKat's: north.
Pickup a passenger going to Riverview Bridge.
Go to Riverview Bridge: north 1st left.
Go to Narrow Path Park: east 1st left 1st right.
Pickup a passenger going to Post Office.
Go to Post Office: east 1st right 4th right 1st left.
Go to Sunny Skies Park: south 1st right 1st left 1st right.
Pickup a passenger going to The Underground.
Go to The Underground: north 1st right 1st right 2nd right.
Switch to plan "f" if no one is waiting.
Pickup a passenger going to Sunny Skies Park.
Go to Sunny Skies Park: north 3rd left 2nd left 1st left.
Switch to plan "a".
[f]

시작 : stdin
가져 오기 stdin 값을 텍스트로 가져 와서 숫자로 변환 한 다음 대기 위치로 옮깁니다.

계획 A 1 부 : 임의의 정수
얻기 1-62 임의의 정수를 얻은 다음 62숫자 로 구합니다 . 임의의 정수와 62나중에 필요하므로 중복합니다 . 당신은 우리가 끝낼 수 있도록 한 번에 3 명의 승객을 수행 할 수 있습니다 rand, rand하고 62. (다른 하나는 62이동 분할 우리가 돌아올 때까지. 기다릴 것) rand에 의해을 62하고 정수를 얻을 수있는 결과를 자릅니다. 다른 사본을 62구하여 나누기에서 잘린 정수로 곱하십시오. 마지막으로의 첫 번째 사본에서 제품을 빼십시오 rand. 이것은 우리에게 숫자 0-61을 제공합니다. 이제 픽업 a로 돌아가서 1결과에 추가하여 숫자 1-62를 얻습니다. 그렇습니다. 많은 텍스트 줄이 모두 있습니다 mod(rand(),62)+1.

파트 A 계획 2 :
유효한 모든 문자와 원하지 않는 끝에 문자열 을 선택합니다 (나중에 자세히 설명). 63우리는이 문자열 길이 앞에서 경기를 집어 들었다. Su 수이에게 가져가 개별 승객으로 나눕니다.

계획 B : 문자를
하나씩 선택할 수 있도록 배열을 이동하고 모든 문자를 좁은 경로 공원으로 이동하십시오. 사용 가능한 유일한 스택이며 남은 승객을 방해하지 않는 유일한 방법입니다. Townsburg의 다른 모든 것은 FIFO이므로 전체 루프의 모든 반복마다 돌아가서 모든 승객을 정리해야합니다. 이런 식으로, 나는 단지 공원에 그들을 남겨 둘 수 있고 그들은 매번 63 명의 새로운 캐릭터에 의해 방해 받게 될 것입니다. 가장 먼저 탈출하지 못할A 가능성이 높습니다 .

계획 C : 캐릭터 선택 준비
이것은 실제로 계획 D에있을 필요가없는 몇 정거장입니다. 택시를 준비 할 때 재배치하십시오.

계획 D : 우리는 모든 문자 가져 오기 해달라고 합니다
, 우리는 결과에서 카운트 다운으로 집어 들고 문자을 연결 유지 "배열을"반전의 첫 번째 문자로 시작 (이것은 우리가 원하지 않는 63 문자입니다) mod기능 당신이 0에 도달하면, 다음 문자는 당신이 원하는 것입니다.

계획 E : 원하지 않는 것을 익사하고 선택한 것을 반환하십시오.
"[P] 승객은 리버뷰 브릿지에서 내려온 것이 항상 옆으로 넘어 강으로 떨어질 것 같습니다 ..."글쎄, 그것은 연결된 패배자 무리를 제거합니다. 다음 캐릭터를 들고 stdout으로 보내십시오. 마지막으로 지금까지 인쇄 한 문자 수를 확인하겠습니다. 오래 전에 떠난 stdin 값을 찾기 위해 Sunny Skyes로 돌아갑니다. 하나를 빼고 결과가 0보다 크면 다시 보내서 계획 A에서 다시 시작하십시오.


이 언어는 튜링 언어입니까? 나는 들어 본 적이 없어? 그렇다면 역사상 가장 긴 코드 골프 답변이 될 수 있습니다!
maple_shaft 16:38에

4
@maple_shaft 택시는 재미 있지만 이것이 가장 긴 코드 골프 답변이 아님을 보장 할 수 있습니다. 있습니다 일부 단항 답변 이 심각 트럼프는.
엔지니어 토스트

1
@maple_shaft 파고 들었습니다. PPCG에서 찾을 수있는 가장 큰 답변 은 @ Dennis ♦ (물론 Dennis ♦) 의이 답변 의 원본 버전이지만 그에 대한code-bowling입니다. code-golf내가 찾을 수있는 가장 긴 대답 은 기본 quine challenge에 대한 최초의 Brain-Flak 제출 입니다. 9.5 * 10 ^ 580 바이트입니다. 내가 찾은 가장 긴 현재 답변 은 Unary : 1.65 * 10 ^ 56 bytes 의 주요 테스터 였습니다 .
엔지니어 토스트


6

젤리 , 5 바이트

트릭을 놓쳤다-ais523의 4 바이 터 참조

ØBX$€

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

방법?

ØBX$€ - Main link: n
    € - for each in range(n):
   $  -   last two links as a monad:
ØB    -     "base digits" - yields list of chars "01..9AB...Zab...z"
  X   -     random choice

UTF-8 문자의 길이가 1 바이트 oO 인 것으로 간주하지 않습니까?
m13r

@ m13r Jelly에는 자체 코드 페이지가 있습니다. 답변 헤더에서 바이트를 클릭하면 볼 수 있습니다.
Jonathan Allan

5

쉘 + pwgen , 13 바이트

pwgen -s $1 1

-s,-보안

완전히 임의의 기억하기 어려운 암호를 생성하십시오.

샘플 출력

%pwgen -s 10 1
2cyhLovbfT

5

자바 8 183 149 97 88 바이트

n->{for(int t;n-->0;t*=Math.random(),System.out.printf("%c",t+=t>9?t>35?61:55:48))t=62;}

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

@ 2501 의 C 답변 을 포팅하여 -9 바이트 이므로 그를 위로 투표해야합니다.

이전 답변, 97 바이트

n->{for(int t;n-->0;t*=Math.random(),System.out.printf("%c",t>9?(t<36?65:97)+t%26:48+t%10))t=62;}

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

설명:

n->{                           // Method with integer parameter and String return-type
  for(int t;                   //  Temp integer
      n-->0                    //  Loop the input amount of times:
      ;                        //    After every iteration:
       t*=Math.random(),       //     Set `t` to a random integer in the range [0,62)
       System.out.printf("%c", //     Print as character:
         t+=                   //      The random integer, after we've added:
            t>9?               //       If the random integer is larger than 9:
             t>35?             //        If the random integer is larger than 35:
              61               //         Add 61
             :                 //        Else:
              55               //         Add 55
            :                  //       Else:
             48))              //        Add 48
    t=62;}                     //   (Re)set `t` to 62 for the random

n->{for(int t;n-->0;t*=Math.random(),System.out.printf("%c",...))t=62;}
                               // Similar as above
         t>9?                  //      If the random integer is larger than 9:
          (t<36?               //       If the random integer is smaller than 36:
            65                 //        Start with 65 ('A')
           :                   //       Else:
            97)                //        Start with 97 ('a')
               +t%26           //       And add the random integer modulo-26
         :                     //      Else:
          48                   //       Start with 48 ('0')
            +t%10)             //       And add the random integer modulo-10


4

눈사람 , 58 바이트

((}#`""*:48vn58nR|65vn91nR,aC|97vn123nR,aCAsH1AaL#aC*;bR))

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

이것은 입력으로 정수를 취하고 임의의 문자열을 리턴하는 서브 루틴입니다.

((             subroutine
  }            make b, e, g active
  #`           e = input (from +)
  ""*          store an empty string in +
  :            what follows is the block to prepend a random char to +
    48vn58nR|  generate range(48..58) and place in g (need b and e for next step)
    65vn91nR   generate range(65..91) in b
    ,aC|       move g to e, concatenate b and e, and move the result to g
    97vn123nR  generate range(97..123) in b
    ,aC        move g to e, concatenate b and e, keeping the result in b
    AsH        shuffle the array of candidate ASCII codes stored in b
    1AaL       equivalent to 0aAwR - get the first element wrapped in an array
    #aC        retrieve + and prepend the randomly generated character
    *          store back into +
  ;bR          repeat this block e times, where e has been set to the input
))             output is given via +

이어야합니다 ((}#`""*:48vn58nR|65vn91nR,aC|97vn123nR,aCAsH1AaL#aC*;bR)).
2501

@ 2501 아, 맞아. 고마워
Doorknob

4

PowerShell, 58 54 바이트

Andrei Odegov 덕분에 -4-문자 배열을 만들기 위해 반복하는 대신 문자 배열로 캐스트합니다.

-join[char[]](65..90+97..122+48..57|random -C "$args")

범위 생성 1..2+4..5 = 1,2,4,5모든 허용 charachter 코드를, 다음 선택 $args임의로 사용 가능한 요소들의 개수 random -Count- 생성 소자 를 통해 반복된다 |%{}내로 설정 [char]들, 사용 문자의 배열에 캐스팅되고 [char[]]그 전부가 괄호 안에 캡슐화되고 - -join함께 에드.

PS C:\users\sweeneyc\Desktop> .\grstr.ps1 5
oaCE5
PS C:\users\sweeneyc\Desktop> .\grstr.ps1 10
UReh6McG7D
PS C:\users\sweeneyc\Desktop> .\grstr.ps1 30
t1YrhZf5egyzqnPlWUKV3cEoIudMTs

매개 변수에 Get-Random1보다 큰 숫자 만 허용 하므로 0의 입력에는 작동하지 않습니다 -Count.


획득 한 바이트 배열을 단일 전체 문자 배열로 캐스트 할 수 있습니다. 이렇게하면 4 바이트를 절약 할 수 있습니다.-join[char[]](65..90+97..122+48..57|random -C "$args")
Andrei Odegov



2

펄 5 , 41 바이트

40 바이트의 코드 + -p플래그

$\.=(a..z,A..Z,0..9)[rand 62]for 1..$_}{

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

(a..z,A..Z,0..9)모든 문자 및 숫자를 포함하는 배열을 생성 [rand 62]APPEND 인이 배열의 임의의 요소를 리턴 ( .=)에 $\암시 적으로 단 덕분에 인쇄되어있는 -p플래그 }{.


또는 동일한 바이트 수이지만 표준 입력이 아닌 매개 변수를 사용하는 경우 :

print+(a..z,A..Z,0..9)[rand 62]for 1..pop

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


2

R, 51 바이트

다른 R 답변과 같은 길이이지만 다른 접근 방식입니다.

cat(sample(c(letters,LETTERS,0:9),scan(),T),sep="")

letters그리고 LETTERS모두 내장되어 각각 모두 소문자와 대문자를 포함하는 변수. 여기에 추가 0:9하면 전체 영숫자 문자 집합이 있습니다.


2

R, 54 52 51 49 바이트

intToUtf8(sample(c(65:90,97:122,48:57),scan(),T))

설명:

  1. 입력 정수 n을 읽습니다 .scan()
  2. ASCII 값을 가진 벡터 : c(65:90,97:122,48:57)
  3. 대체품으로 샘플 n ASCII 값 :sample(c(65:90,97:122,48:57),scan(),T)
  4. ASCII 값을 사용하여 문자열로 문자열 변환 intToUtf8

같은 길이의 다른 접근법을 찾았습니다.
JAD

@JarkoDubbeldam 좋은 아이디어는,이 2 바이트를 저장하는 저를 도왔다
스벤 호헨 슈타인에게

도! nice job :)
JAD

2

자바 스크립트 (ES6), 61 54 39 52 64 바이트

이것은 거의 역 골프와 같습니다! 바이트 수를 크게 늘려 세 그룹의 모든 문자를 사용할 수 있습니다.

f=n=>n--?btoa(String.fromCharCode(Math.random()*248))[0]+f(n):""
  • Arnauld 의 재귀 함수 사용 제안 덕분에 15 바이트가 (한 단계에서) 절약되었습니다 .

시도 해봐

f=n=>n--?btoa(String.fromCharCode(Math.random()*248))[0]+f(n):""
i.addEventListener("input",_=>o.innerText=f(+i.value))
<input id=i type=number><pre id=o>


@Arnauld; 3 개의 문자 그룹이 모두 포함되도록 업데이트했습니다. 방금 둘 이상을 포함 할 수있는 색인을 찾으려고합니다. 재귀 옵션을 제안 해 주셔서 감사합니다.
얽히고 설킨

나는 그 아이디어를 좋아하지만, 당신은 이제 [0-5w-z]독점적으로 캐릭터를 생성하고 있다고 생각합니다 .
Arnauld

btoa(String.fromCharCode(Math.random()*248))[0]전체 범위를 균일하게 커버하도록 제안 합니다.
Arnauld

@Arnauld 자신도 알았습니다. toString3 그룹의 모든 문자를 반환 할 수 있도록 두 가지 방법 (변환 및 인코딩) 을 결합 해야하는 것처럼 보입니다 .
얽히고 설킨

그것은 더 좋지만 여전히 불완전합니다 : 014589ABEFIJMNQRUVYZcdghklopstwx(그리고 균일하지 않음).
Arnauld

2

Alice , 24 바이트

/w9u"Uz;r
\0.rdao"ki@/t&

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

이 레이아웃은 이미 원래했던 것보다 훨씬 낫습니다 (32 바이트). 그러나 아직 최적이 아니라고 확신합니다 ...

설명

/      Reflect to SE. Switch to Ordinal.
       The IP now bounces diagonally up and down through the code.
09     Append 0 and 9 to an (implicit) empty string to create "09".
r      Range expansion, turns the string into "0123456789".
"az"   Push this string.
r      Range expansion, turns it into the lower-case alphabet.
i      Read all input as a string.
/      Reflect to E. Switch to Cardinal.
t      Implicitly convert the input string to the integer value N it
       contains and decrement it.
&      Run the next command N-1 times.
       The IP wraps around to the first column.
\      Reflect to NE. Switch to Ordinal. (This is not a command.)
w      Push the current IP address to the return address stack N-1
       times. This starts a loop whose body will run N times.
  .      Duplicate the lower-case alphabet.
  u      Convert it to upper case.
  d      Push the concatenation of all values on the stack. This pushes
         a single string with digits, lower-case and upper-case alphabet.
  U      Random choice. Pick a character from this string uniformly at random.
  o      Print it.
  ;      Discard the upper-case alphabet, because it will be regenerated
         in the next loop iteration (and if we leave it, then upper-case
         letters will become more and more likely as the output grows).
k      As long as there is still an address on the return address stack,
       jump back to that address (i.e. to the w). Once the return address
       stack has been depleted, this does nothing and the loop is exited.
@      Terminate the program.

2

Python + exrex , 81 바이트

import exrex,random
lambda n:random.choice(list(exrex.generate("[A-Za-z0-9]"*n)))

2

파이썬 2, 79 83 79 바이트

import random as r,string as s;lambda x:''.join(r.sample(s.printable[:62]*x,x))

+4 바이트 (반복을 고려하지 않은)

-4 (사용에 대한 제안에 대한 @Rod 덕분 바이트 printable[:62])


1
작동하지 않으면 반복이 포함되어야합니다. (s.letters+s.digits)*x대신에 사용할 수 있습니다s.letters+s.digits
Rod

@로드 고정, 감사합니다!
Wondercricket

`r.sample(...)`[2::5]대신 ''.join(r.sample(...))바이트를 저장하는 데 사용할 수도 있고 (파이썬 2 만 해당) 4 바이트를 저장 (s.letters+s.digits)*x하도록 전환 할 수도 있습니다s.printable[:62]*x
Rod

@로드 제안에 감사드립니다. 구현 printable, [2::5]작동 하지 못했습니다 (아마 내가 잘못하고
있었을

당신 은 그것에 대한 정보r.sample() 를 백틱으로 목록 을 둘러싸 야 `` 합니다
Rod



1

배치, 175 바이트

@set s=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
@for /l %%i in (1,1,%1)do @call :c
@echo %s:~62%
:c
@set/an=%random%%%62
@call set s=%s%%%s:~%n%,1%%

s영숫자 목록과 무작위로 선택한 문자가 모두 포함되어 있으므로 이중 의무를 수행합니다. 결과를 인쇄 한 후 코드는 결과가 무시되는 서브 루틴으로 넘어갑니다.


1

파이크 , 4 바이트

~JfH

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

~J   -   "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  f  -  cominbations(^, length=input)
   H - random.choice(^)

이것은 3보다 큰 입력에 대해 작동하지 않는 것 같으며 동일한 문자를 두 번 이상 생성 할 수 있는지 확실하지 않습니다.
ATaco

이 3보다 큰 입력에 대해 작업을하지 않는 난 여기가 시도했다 : pyke.catbus.co.uk
m13r

단 4 영숫자 문자열을 만들 수있는 1GB의 RAM에 대한이 필요 ... (10)의 입력에 대한 작업에 그것을 얻을하지 않았다 프로그램은로 추락MemoryError
m13r

1

Pyth, 7 11 바이트

O^s++rG1GUT

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

설명

O^s++rG1GUT
    +rG1G      Take the uppercase and lowercase alphabets.
   +     UT    Add it to the list [0, ..., 9].
  s            Concatenate to get a string.
 ^         Q   Get all strings of length N.
O              Choose one at random.

여기에는 대문자가 아닌 소문자 알파벳과 숫자 만 포함됩니다
Blue

@muddyfish 잘 잡아라. 결정된.

1

C #-121 바이트

void g(int n){Console.Write(Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(new Random().Next().ToString())).Substring(0,n));}

1

APL (Dyalog)AGL 17 바이트

(⎕A,∆a,⎕D)[?⎕⍴62]

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

(... )[... ] 인덱스로

⎕A,∆a,⎕D 대문자 알파벳 뒤에 소문자 알파벳 뒤에 숫자가옵니다

사용

62 (가능한 기호의 수

에 의해 재 형성

 평가 된 입력 ( n )

? 각 62를 1… 62 범위의 난수로 변경

APL (APLX) , 17 바이트

(⎕A,⎕a,⎕D)[?⎕⍴62]


1

, 13 바이트

LaORCz.AZ.J,t

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

설명

               a is cmdline arg; t is 10; z is lcase alphabet; AZ is ucase (implicit)
La             Do the following, a times:
  O             Output (without newline)
   RC           random choice from:
     z           Lowercase letters
      .AZ        concatenated with uppercase letters
         .J,t    concatenated with range(10) joined into a string

1

Sinclair ZX81 / Timex TS1000 / 1500 기본, ~ 63 토큰 화 된 기본 바이트

 1 INPUT N
 2 IF NOT N THEN STOP
 3 FOR N=SGN PI TO N
 4 PRINT CHR$ (CODE "A"+RND*26);
 5 NEXT N

ZX81에는 어셈블리를 사용하거나 일종의 UDG ROM 등을 사용하지 않고 소문자가 없으며 당분간 만 출력 A-Z합니다. 0을 입력하면 프로그램이 중지되고 직접 모드로 돌아갑니다.



0

스택 형 , 33 바이트

:>[alpha 10:>ALPHA,,''#`randin]"!

온라인으로 사용해보십시오! 스택 맨 위에서 입력을 가져 와서 스택 맨 위에 출력을 남겨 둡니다.

:>[alpha 10:>ALPHA,,''#`randin]"!
:>                                  range from 0 to n-1
  [                           ]"!   on each, do:
   alpha                            push "abc...xyz"
         10:>                       push (0 1 2 ... 8 9)
             ALPHA                  push "ABC...XYZ"
                  ,,                concat twice
                    ''#`            join by nothing
                        randin      select random member in it
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.