미국 번호판 생성


16

입력으로 다음 중 하나가 제공됩니다.

AK,AR,AS,AZ,CA,CT,DC,FL,GA,IL,IN,IA,KS,KY,LA,MD,MI,MN,MS,NV,NH,NJ,NM,NY,NC,ND,MP,OH,OK,OR,PA,PR,RI,SC,TN,TX,UT,VT,VA,WA,WI

(따옴표 포함)

"AK","AR","AS","AZ","CA","CT","DC","FL","GA","IL","IN","IA","KS","KY","LA","MD","MI","MN","MS","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK","OR","PA","PR","RI","SC","TN","TX","UT","VT","VA","WA","WI"

입력과 일치하는 형식의 (균일하게) 무작위 번호판을 생성하고 출력합니다. 여러 개의 (쉼표로 구분 된) 형식이있는 경우 (균일하게) 임의 형식을 사용하십시오.

AK, IA, MS, MP, VT: AAA 000
AS: 0000
AZ, GA, WA: AAA0000
AR, KS, KY, LA, ND, OR: 000 AAA
CA: 0AAA000
CT: AA-00000
DC: AA-0000
FL: AAA A00
IL: AA 00000
IN: 000A,000AA,000AAA,AAA000
MD: 0AA0000
MI: AAA 0000,0AA A00,AAA 000
MN: 000-AAA
NV: 00A-000
NH: 000 0000
NJ: A00-AAA
NM: 000-AAA,AAA-000
NY, NC, PA, TX, VA, WI: AAA-0000
OH: AAA 0000
OK: 000AAA
PR: AAA-000
RI: 000-000
SC: AAA 000,000 0AA
TN: A00-00A
UT: A00 0AA

여기서 A대문자 알파벳의 빼기 문자 IOQ0 수단 임의의 한 자리 숫자 ( 09).

의 모든 정보 Wikipedia의 . 이 (상태)는 내가 이해하고 이상한 규칙이 없었습니다.

이것은 이므로 바이트 단위의 최단 답변이 승리합니다!


2
@MagicOctopusUh heh, 그것에 대해, 같은 형식의 다른 주들이 서로 탭을 유지하지 않기 때문에 그들은 같은 수를 발행 할 수 있고 경찰은 판의 상태를보아야 할 것입니다
Stephen

1
각 주에 대한 크기 숫자 공간이 다릅니다. 우리는 1) 모든 주에 대한 결합 된 수 공간을 고려하고 그것을 균일하게 선택합니까 (수 공간이 클수록 더 많은 가중치를 갖는 상태)? 또는 2) 먼저 50 개 상태 중 하나를 균일하게 선택한 다음 해당 상태의 숫자 공간에서 균일하게 숫자를 선택합니까 (모든 상태에 동일하게 가중치가 적용됨)?
디지털 외상

1
죄송합니다. 제대로 읽지 못했습니다. 상태가 입력됩니다.
디지털 외상

1
예, 여러 형식을 가진 주와 비슷한 질문입니다 IN. 형식 (000A, 000AA, 000AAA 또는 AAA000 중 하나)을 균일하게 선택한 다음 해당 형식에서 숫자를 선택합니다 (각 형식의 가중치는 동일). 아니면 해당 상태에 대한 모든 형식의 숫자 공간을 고려하고 전체 숫자 공간에서 선택합니까 (더 큰 형식의 가중치 적용)?
디지털 외상

2
아래의 플레이트 형식을 설명하더라도 입력 목록에서 "AR"및 "OR"을 생략했다고 생각합니다.
나무가 아니다

답변:


3

펄 6 , 492350 바이트

{$_=('AKIAMSMPVT:7 3AS:4AZGAWA:74ARKSKYLANDOR:3 7CA:173CT:6-5DC:6-4FL:7 52IL:6 5IN:35,36,37,73MD:164MI:7 4,16 52,7 3MN:3-7NV:25-3NH:3 4NJ:52-7NM:3-7,7-3NYNCPATXVAWI:7-4OH:7 4OK:37PR:7-3RI:3-3SC:7 3,3 16TN:52-25UT:52 16'~~/$^a
[..]*?\:(<[\d]+[-\ ]>+)+%\,/)[0].pick;s:g/<[567]>/{[~]
(('A'..'Z')∖<I O Q>).pick xx($/-4)}/;S:g/\d/{[~] (^10).pick xx$/}/}

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

첫 번째 시도 후에 훨씬 앞서 있었으므로 코드를 파싱하려고 많은 노력을 기울이지 않았습니다. 지금 나 한테있어.

번호판 패턴을 인코딩 할 때 숫자 1-4는 많은 임의의 숫자의 런을 나타내고 숫자 5-7은 임의의 허용 된 문자의 런을 나타냅니다.


당신은 공간을 처리합니까?
Zacharý

아, 실제로, 나는 텍스트의 나머지 부분에서 너무 열정적으로 전에 공백을 제거했습니다. 12 바이트를 더하기 위해 공백을 다시 넣었습니다.
Sean

6

Python3, 861 821 819 714 678 674 670 662 661 658 596 591 561 555 551 536 바이트.

@DestructibleLemon ( b=a+... 및 d=B...) 덕분에 -8 바이트 , @Felipe Nardi Batista 덕분에 -15 바이트 (사용할 수없는 람다 및 변수)

그리고 채팅을 도와 주신 모든 분들께 감사드립니다.

from random import*
C=choice
Z='000'
A='AAA'
B=A+'-0'+Z
a=A+' '+Z
b=A+'0'+Z
c=a[::-1]
d=B[1:]
print(C(''.join(C(['ABCDEFGHJKLMNPRSTUVWXYZ','0123456789',i]['A0'.find(i)])for i in([a]*5+[Z+'0',b,b,b]+[c]*6+['0'+A+Z,d,d+'0',A+' A00','AA 00'+Z,Z+'A,000AA,000AAA,'+A+Z,'0AA0'+Z,a+'0,0AA A00,'+a,Z+'-'+A,'00A-'+A,Z+' 0'+Z,'A00-'+A,Z+'-AAA,AAA-'+Z]+[B]*6+[a+'0',Z+A,B[:-1],Z+'-'+Z,a+','+c,'A00-00A','A00 0AA'])[[*zip('AIMMVAAGWAKKLNOCDCFIIMMMNNNNNNPTVWOOPRSTU','KASPTSZAARSYADRACTLLNDINVHJMYCAXAIHKRICNT')].index(tuple(input()))]).split(',')))

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

모든 골프 제안은 환영받습니다. 그리고 오류가 발견되면 의견을 통해 알려주십시오.


파이썬 목록의 항목을 이전 항목 또는 목록의 다른 항목으로 설정하는 방법이 있습니까? 마찬가지로, 설정 IAlist[0]나 뭐 그런 (내가 파이썬을 모르는)
스티븐

아니요. 사전이므로 사전에 이름을 지정하지 않았으므로 참조 할 방법이 없습니다.
Zacharý

1
b 할당 수 없습니다 b= a+"0"? d는 = B [1 :] 일 수 있습니까?
Destructible Lemon

ba+'0'번호판을 망쳐 놓을 수 없습니다 .
Zacharý

1
람다를 제거하고 목록에 반복을 추가하여 561 바이트에서 541 바이트
Felipe Nardi Batista

6

자바 스크립트 (ES6), 374 368 바이트

s=>(P=n=>parseInt(n,36),R=Math.random,g=F=>F?(' -'+(R()*10|0)+'ABCDEFGHJKLMNPRSTUVWXYZ'[R()*23|0])[F&3]+g(F>>2):'')(P('8cf,4q,8fz,ch6,8hq,xpb,8f3,8jj,xov,6i|ru|356|24f,8fy,xmn|8ji|8cf,ciy,8e2,xm2,ciz,ciy|8e7,xof,xmn,356,8e7,8dm,8cf|ca2,bjf,ca3'.split`,`[P('1k3600d2mha35h7bi00jc000o03000000809l002003n0h3032e0fh4g0h'[P(s)%159%131%70%58])].split`|`.sort(_=>R()-.5)[0]))

형식화 및 의견

다음 코드에서 데이터 섹션이 잘 렸습니다. 누락 된 부품은(...) 있습니다.

s => (                                  // given the state s
  P = n => parseInt(n, 36),             // P = base-36 parsing function
  R = Math.random,                      // R = random generator
  g = F =>                              // g = recursive function taking an encoded format F
    F ?                                 // if the format has not been yet fully processed:
      (                                 //   build a string consisting of:
        ' -' +                          //     0: space, 1: hyphen
        (R() * 10 | 0) +                //     2: a random digit
        'ABCD(...)YZ'[R() * 23 | 0]     //     3: a random uppercase letter (minus I, O, Q)
      )[F & 3] +                        //   pick the next character from this string
      g(F >> 2)                         //   recursive call, dropping the 2 consumed bits
    :                                   // else:
      ''                                //   stop recursion
  )(                                    // initial call to g():
    P(                                  //   base-36 decoding of a format picked from
      '8cf,4q,(...),ca3'.split`,`[      //     a list of binary encoded formats
        P(                              //       accessed through a base-36 decoded index
          '1k36(...)0h'[                //         picked from a lookup-table of 58 entries
            P(s) % 159 % 131 % 70 % 58  //           based on a hash of the state
          ]                             //         end of lookup-table access
        )                               //       end of lookup-table index decoding
      ].split`|`                        //     end of list access / split it on '|'
      .sort(_ => R() - .5)[0]           //     randomly pick a format from this list
    )                                   //   end of format decoding
  )                                     // end of call

데모


5

T-SQL, 1104 1100 797657 바이트

DECLARE @ CHAR(8)SELECT @=STUFF(value,1,2,'')FROM STRING_SPLIT(CAST(DECOMPRESS(CAST('H4sIAAAAAAAEAEWPUQ6DMAiGr2JCwlM9BKnZ7LTV2E7n7n+QlRbYC3yl8PNDCyIOAOACKcVstCudRYkytPSthUZPUrqM6KhxqC+3ZKNbaSWlNCltNuEJuozzdekITXDygu6xshNkx2u3xJhqREmWGUQqTiDWYpBLGEGkrOgij47N21k1eKdLM3trI+mF+h2tMSJK441qM3nDnQzLx/D8V69guM3mblvkiP1Q/SPwTqbs1XD2zVztKwnbL7p3wV77AcxSbMHfAQAA'as XML).value('.','varbinary(max)'))AS varchar(max)),','),t WHERE s=LEFT(value,2)ORDER BY NEWID()WHILE CHARINDEX('&',@)>0SET @=STUFF(@,CHARINDEX('&',@),1,SUBSTRING('ABCDEFGHJKLMNPRSTUVWXYZ',CAST(1+23*RAND()AS INT),1))WHILE CHARINDEX('#',@)>0SET @=STUFF(@,CHARINDEX('#',@),1,CAST(10*RAND()AS INT))PRINT @

편집 1 : 변경하여 300 바이트 이상 저장 VALUES() 하여STRING_SPLIT() (SQL 2016 이상에서만 사용 가능)

편집 2 : GZIP 압축을 사용하여 140 바이트를 더 절약했습니다. 여기에 설명 된대로 을 했습니다 . 우리는 이미 SQL 2016 이상으로 제한 했으므로 이러한 기능을 사용할 수 있습니다.

입력은 s 열에 상태 코드가있는 기존 테이블 t 를 통해 이루어집니다 . 우리의 IO 표준 당 .

압축 된 문자열을 확장 한 후 다음과 같이 긴 긴 상태 목록이 포함 된 형식화 된 코드가 있습니다.

DECLARE @ CHAR(8)
SELECT @=STUFF(value,1,2,'')
FROM STRING_SPLIT('AK&&& ###,IA&&& ###,MS&&& ###,...
                         (long string continues)
                   ...,SC### #&&,TN&##-##&,UT&## #&&',','),t
WHERE s=LEFT(value,2)ORDER BY NEWID()

WHILE CHARINDEX('&',@)>0
    SET @=STUFF(@,CHARINDEX('&',@),1,
        SUBSTRING('ABCDEFGHJKLMNPRSTUVWXYZ',CAST(1+23*RAND()AS INT),1))

WHILE CHARINDEX('#',@)>0
    SET @=STUFF(@,CHARINDEX('#',@),1,
        CAST(10*RAND()AS INT))

PRINT @

그래서 가능한 모든 (상태, 패턴) 쌍으로 구성된 거대한 인 메모리 테이블을 만들었습니다. 행을 결합하지 않고 각 상태는 별도이며 IN과 같은 상태에는 각 패턴마다 하나씩 4 개의 행이 있습니다.

메모리 내 테이블을 입력 테이블에 조인 할 때 정렬 NEWID()합니다. 순서를 무작위 화하고 임의의 일치 패턴을 변수에 반환합니다.@ .

그런 다음 각각 &을 임의의 문자로 바꾸고 각각 을 #임의의 숫자로 바꾸고 결과를 반환합니다.


4

> <> , 967 (860) 851 바이트

</b:++d**d85-*i9*i2
v\+?\"00A AAA"
 /5:/
v\+?\"00000 AA"
 /4:/\
v\+?\x"000-AAA"
 /f:/
v\+?\>"AAA-000"
 /1:/
v\+ ?\"A00-00A"
v/cb:/\/"A000"
v\++?\xx"AA000"
v/88:/\x"000AAA"
v\+-?\ >"AAA000"
 /2f:/v\
v\*-?\xx"0000 AAA"
v/8c:/\x"00A AA0"
v\*-?\x>"000 AAA"
v/7c:/\"AA0 000"
v\*+?\"0000"
 /6b:/
v\*-?\"0000-AA"
 /5f:/
v\*-?\"0000AA0"
 /bc:/
v\+-?\"AAA-00A"
 /59:/
v\*+?\"000-AAA"
 /4a:/
v\*- ?\"000-000"
 /*a8:/
v\2+-?\"000AAA0"
 /*a8:/
v\9++?\"00000-AA"
 /*a8:/
v\5++?\"000-A00"
 /*a4:/
v\1+-?\"0000 000"
 /*a4:/
v\3+-?\"0000 AAA"
 /*a5:/
v\3++?\"AA0 00A"
 :63*+\:9a*4+-:aa*6++:73*+
 /*+9:/
v\***?\"000 AAA"
 8*-*$\::9a*-:4
 /7*ae/
v\++*?\"0000AAA"
 :4a*3\:aa*-:cb++:ca*4++:a7++:b+
v/**++/"0000-AAA"
v\***?/"AAA 000"
<ov?="A":v?="0":;?=1l
~!/0\v[0<
 l<1x/?=]!5
 +*2_/?= 1l
 -8::/*(~!*d2$**-2:-6:
^    >?!^"A"+o]
]~</0\v[0<
 l <1x/?=4
 + *2_<v?=1l
^n^?)9:<

온라인으로 시도 하거나 물고기 놀이터 에서 시청하십시오 !

이 코드에는 두 가지 부분이 있습니다. 상태를 패턴과 일치시킨 다음 패턴을 임의의 문자로 바꿉니다. 이 중 어느 것도> <>에서 쉽지 않습니다.

우선, 우리는 두 개의 문자로 읽고,이 계산  C (1) - (9)  C 2 + 533, C 1c를 2두 개의 문자 코드입니다. 공식이 각 상태에 고유 한 값을 제공하도록 2와 9가 선택되었으며, 3> <> 명령 만 사용하여이 값의 수를 최대화하기 위해 533의 오프셋이 선택되었습니다. 그들 중 41 명. 그런 다음 올바른 값을 찾을 때까지 코드를 통해 물고기 지그재그를 보내십시오.이 시점에서 지그재그를 벗어나 적절한 패턴을 읽은 다음 맨 왼쪽 열의 빠른 스트림에 파트 2로 내려갑니다. 상태, 특히 여러 패턴을 선택한 상태는 특별한 고려가 필요했지만 몇 가지 코드를 재사용하여 몇 바이트를 절약했습니다.

다음으로, Part 2, 즉 "A"와 "0"을 각각 임의의 문자와 숫자로 바꿔야합니다. > <>의 유일한 임의 명령 x은으로 물고기의 방향을 임의로 위, 아래, 왼쪽 및 오른쪽으로 설정합니다. 10 자리 또는 23 자 중에서 균일하게 무언가를 선택하는 데 도움이되지 않습니다. 물고기가 어떻게 작동하는지 알아 보려면 숫자 비트를 살펴 보겠습니다.

]~</0\v[0<
 l <1x<v?=4
 l 1=_?\2*+
^n^?)9:<

물고기는 오른쪽 상단에서 들어갑니다. 피쉬는 빈 스택을 설정합니다 — 스택의 길이가 4가 될 때까지 0[무작위로 밀 1거나 0같은 확률로

   /0\v
 l <1x<v?=4
     _

그런 다음 4 개의 1s와 0s를 2 진수 인 것처럼 결합합니다. l1=?\2*+— 0에서 15까지의 숫자를 제공합니다. 결과가 9보다 크면 방금 수행 한 모든 작업을 버리고 다시 시도합니다. 그렇지 않으면 숫자를 인쇄하고 계속합니다.

]~<   v[0<
     x<

^n^?)9:<

임의의 문자를 만드는 것은 결과가 "I", "O"또는 "Q"가 아닌지 확인하는 것을 제외하고는 거의 동일 ::8-:6-:2-**합니다.


3

매스 매 티카, 635 507 470 바이트

p=RandomChoice;a_±b_:=a<>b;r=""±Characters@"ABCDEFGHJKLMNPRSTUVWXYZ"~p~#&;j=""±ToString/@0~Range~9~p~#&;m=r@3;o=j@3;x=r@2;u=j@2;z=r@1;t=j@1;k=z±u±"-";w=m±" ";AS=y=j@4;AZ=GA=WA=m±y;CT=x±"-"±j@5;DC=x±"-"±y;FL=w±z±u;IL=x±" "±j@5;IN=p@{o±z,o±x,OK=o±m,s=m±o};CA=t±s;MD=t±x±y;MI=p@{OH=w±y,t±x±" "±z±u,AK=IA=MS=MP=VT=w±o};NV=u±z±"-"±o;NH=o±" "±y;NM=p@{MN=o±"-"±m,PR=m±"-"±o};NY=NC=PA=TX=VA=WI=m±"-"±y;RI=o±"-"±j@3;SC=p@{AR=KS=KY=LA=ND=OR=o±" "±m,VT};NJ=k±m;TN=k±u±z;UT=k±t±x;#&

@JungHwanMin에서 -165 바이트

입력 양식

[NV]


1
3 글자를 제외해야하기 때문에 Alphabet []을 사용하지 않았습니다 (IOQ)
J42161217

마지막으로 작동하지 않았습니다. 작업 버전 : 507 바이트 : pastebin.com/4YkkkQrC
JungHwan Min

사용하여 470 바이트 (CP-1252) \[PlusMinus]: pastebin.com/cGHvSJRi
JungHwan 최소

1

PHP, 609 바이트

<?$k='9 3';$l='3 9';$m='9-4';$f=[AK=>$k,IA=>$k,MS=>$k,MP=>$k,VT=>$k,'AS'=>4,AZ=>94,GA=>94,WA=>94,AR=>$l,KS=>$l,KY=>$l,LA=>$l,ND=>$l,'OR'=>$l,CA=>193,CT=>'8-5',DC=>'8-4',FL=>'9 72',IL=>'8 5',IN=>'37X38X39X93',MD=>184,MI=>'9 31X18 72X9 3',MN=>'3-9',NV=>'27-3',NH=>'3 4',NJ=>'72-9',NM=>'3-9X9-3',NY=>$m,NC=>$m,PA=>$m,TX=>$m,VA=>$m,WI=>$m,OH=>"$k1",OK=>39,PR=>'9-3',RI=>'3-3',SC=>"$kX3 18",TN=>'72-27',UT=>'72 18'];$a=str_split(ABCDEFGHJKLMNPRSTUVWXYZ);$n=range(0,9);$p=explode(X,$f[$argv[1]]);shuffle($p);for(;$c=$p[0][$i++];){if($c<1)echo$c;else for($j=0;$j<$c%6;$j++){echo$c>5?$a[rand(0,22)]:$n[rand(0,9)];}}

주요 아이디어는 숫자 또는 문자의 반복 횟수를 나타내는 숫자로 번호판 패턴을 인코딩하는 것입니다. 1에서 5는 자릿수를 나타내고 7, 8 및 9는 각각 1, 2 또는 3자를 나타냅니다. 여러 패턴은 X로 구분되며 공백과 대시는 그대로 유지됩니다. 상태 조회는 간단한 배열 키 조회이며 공간을 절약하기 위해 중복 문자열이 변수에 배치됩니다.

언 골프 드 :

<?php
$f=[
    AK=>'9 3',
    IA=>'9 3',
    MS=>'9 3',
    MP=>'9 3', 
    VT=>'9 3',
    'AS'=>4,
    AZ=>94,
    GA=>94,
    WA=>94,
    AR=>'3 9',
    KS=>'3 9',
    KY=>'3 9',
    LA=>'3 9',
    ND=>'3 9',
    'OR'=>'3 9',
    CA=>193,
    CT=>'8-5',
    DC=>'8-4',
    FL=>'9 72',
    IL=>'8 5',
    IN=>'37X38X39X93',
    MD=>184,
    MI=>'9 31X18 72X9 3',
    MN=>'3-9',
    NV=>'27-3',
    NH=>'3 4',
    NJ=>'72-9',
    NM=>'3-9X9-3',
    NY=>'9-4',
    NC=>'9-4',
    PA=>'9-4',
    TX=>'9-4',
    VA=>'9-4',
    WI=>'9-4',
    OH=>'9 31',
    OK=>39,
    PR=>'9-3',
    RI=>'3-3',
    SC=>'9 3X3 18',
    TN=>'72-27',
    UT=>'72 18'
];
$a=str_split(ABCDEFGHJKLMNPRSTUVWXYZ);
$n=range(0,9);
$p=explode('X',$f[$argv[1]]);
shuffle($p);
for ($i = 0; $i < strlen($p[0]); $i++) {
    $c=$p[0][$i];
    if ($c < 1)
        echo $c;
    else {
        for ($j = 0; $j < $c % 6; $j++){
            echo $c > 5 ? $a[rand(0,22)] : $n[rand(0,9)];
        }
    }
}

1

PHP ( ), 495 바이트

바이너리 Phar 파일은 여기에서 다운로드 하여 실행할 수 있습니다php uslic.phar <state code> .

Phar를 생성하는 데 사용되는 기본 코드는 다음과 같습니다 (820 바이트).

<?$f=[AK=>'AAA 111',IA=>'AAA 111',MS=>'AAA 111',MP=>'AAA 111',VT=>'AAA 111','AS'=>'1111',AZ=>'AAA1111',GA=>'AAA1111',WA=>AAA1111,AR=>'111 AAA',KS=>'111 AAA',KY=>'111 AAA',LA=>'111 AAA',ND=>'111 AAA','OR'=>'111 AAA',CA=>'1AAA111',CT=>'AA-11111',DC=>'AA-1111',FL=>'AAA A11',IL=>'AA 11111',IN=>'111AX111AAX111AAAXAAA111',MD=>'1AA1111',MI=>'AAA 1111X1AA A11XAAA 111',MN=>'111-AAA',NV=>'11A-111',NH=>'111 1111',NJ=>'A11-AAA',NM=>'111-AAAXAAA-111',NY=>'AAA-1111',NC=>'AAA-1111',PA=>'AAA-1111',TX=>'AAA-1111',VA=>'AAA-1111',WI=>'AAA-1111',OH=>'AAA 1111',OK=>'111AAA',PR=>'AAA-111',RI=>'111-111',SC=>'AAA 111X111 1AA',TN=>'A11-11A',UT=>'A11 1AA'];$a=str_split(ABCDEFGHJKLMNPQRSTUVWXYZ);$n=range(0,9);$p=explode(X,$f[$argv[1]]);shuffle($p);for(;$i<strlen($p[0]);){$c=$p[0][$i++];echo$c==A?$a[rand(0,22)]:($c>0?$n[rand(0,9)]:$c);}

해당 코드에서 직접 Phar를 생성하려면 다음을 수행해야합니다.

<?php
$phar = new Phar('uslic.phar', 0, 'u');
$phar->setSignatureAlgorithm(Phar::MD5);
$phar->addFile('s');
$phar['s']->compress(Phar::GZ);
$phar->setStub('<?include"phar://u/s";__HALT_COMPILER();');

흥미롭게도, 이것은 골프 버전 보다 더 잘 압축됩니다. .

파일의 16 진 덤프는 다음과 같습니다.

3C 3F 69 6E 63 6C 75 64 65 22 70 68 61 72 3A 2F 
2F 75 2F 73 22 3B 5F 5F 48 41 4C 54 5F 43 4F 4D 
50 49 4C 45 52 28 29 3B 20 3F 3E 0D 0A 30 00 00 
00 01 00 00 00 11 00 00 00 01 00 01 00 00 00 75 
00 00 00 00 01 00 00 00 73 34 03 00 00 26 C8 A9 
59 76 01 00 00 E3 82 AE C9 B6 11 00 00 00 00 00
00 55 90 5D 6F 82 30 14 86 FF 8A 17 4D 0A B1 26 
E2 9D 43 34 1D 4C 45 04 19 20 A2 84 2C 04 41 4D 
0C 12 74 CB 92 65 FF 7D A5 AD A3 DC 34 7D CE C7 
FB 9E 73 26 33 50 68 31 B6 B4 29 C4 18 F7 14 45 
81 C8 C4 22 D9 7E 87 5C 91 C2 40 24 88 7D 48 58 
A1 80 0F 2C C5 68 81 45 DA 11 E2 80 B0 C7 5A 7A 
24 00 91 E5 77 68 2F D2 1A 8B E4 18 22 C1 8D 07 
45 D6 69 2D F3 20 C4 C6 1C 28 CC DE D0 5B 84 68 
BE E6 3B 60 BA 3B A3 1E 2F 35 1D A6 8A A3 E6 E1
2F 8E 9E C2 B6 C1 6C 58 B1 6D B6 D7 50 22 85 49 
46 ED E9 B8 D6 80 CD 1F 52 A2 53 10 5A F2 E9 99    
92 B3 6A 94 FE 4B ED B6 B1 91 E3 2D 7B E6 C6 D7 
70 F4 0E BA B8 83 41 D4 C1 B0 9B DD 99 1D DC 2C
85 3D 08 5A FC 06 CD 2C AE D7 96 42 E4 99 7C 32
4A BE DE F6 45 74 99 A6 23 70 F8 2E 44 01 A2 6D
C0 88 E6 12 15 A4 DA FD 51 7F DC AB EB E5 21 E1 
57 DD 78 9B 2F 96 2B 6B 6D 3B EE BB E7 07 DB 70
17 ED 0F B2 0A 4A AD 4E CB 53 2E 0D D1 98 50 A5 
E5 DF D5 F5 76 CC A5 08 81 22 06 69 7D FA 8A 95 
24 91 D5 FB F9 B3 28 AE B9 04 2A 59 2D 6E B5 A4 
82 CB 84 18 5C F3 92 84 E2 21 A9 90 7F 40 A6 D1 
7F 0C 2E FD 7E A2 E6 D9 F9 46 42 1A 9E 81 34 26 
2E 47 62 32 1A C9 C9 8B 04 B2 E9 70 06 CA 67 70 
4C 62 20 93 D5 DF 3F A0 DB 74 9C 07 ED A5 F7 4D 
BA 32 97 A2 E7 9C 83 01 00 00 00 47 42 4D 42 

1

Clojure에서, 502 501 바이트

#(apply str(for[E[repeatedly]c(rand-nth(cond('#{AK IA MS MP VT}%)["D 3"]('#{AR KS KY LA ND OR}%)["3 D"]('#{AZ GA WA}%)["D4"]1(case % AS["4"]CA["1D3"]CT["C-5"]DC["C-3"]FL["D B1"]IL["C 4"]IN["3B""3C""3D""D2"]MD["1C3"]MI["D 4""1C B2""D 2"]MN["3-C"]NV["2B-2"]NH["3 3"]NJ["B2-C"]NM["3-D""D-2"]OH["D 3"]OK["3C"]PR["D-2"]RI["3-2"]SC["D 3""3 1B"]TN["B2-2"]UT["B2 1B"]["D-4"])))r(cond((set"BCD")c)(E(-(int c)65)(fn[](rand-nth"ABCDEFGHJKLMNPRSTUVWXYZ")))((set"1234")c)(E(-(int c)48)(fn[](rand-int 10)))1[c])]r))

입력 인수는 문자열 이 아니라 기호 입니다. 이렇게하면 많은 따옴표를 피할 수 있습니다. B- D반복 인코딩 A- AAA, 1- 4반복 인코딩 0- 0000.


1

파이썬 2 , 438 바이트

import re,random
lambda s,R=range,C=random.choice:re.sub('\d',lambda c:''.join(C(['0123456789','ABCDEFGHJKLMNPRSTUVWXYZ'][c.group()>'4'])for _ in R(int(c.group())%5+1)),C("063;6-3;072;3;7 2,2 06;6-4;51-15;2-7,7-2;7 2;;7 3;;6 4;2 7;2 7;2-2;25,26,27,72;2 7;;7 3,06 51,7 2;7 2;73;;2 3;;7 51;;73;7 2;2 7;;27;2 7;;7 2;7-2;;73;;51-7;;51 06;;2-7;15-2;7 2;;7-3".split(";")["MDCASCTNMSOHILARINDMIAZNHFLWAKSOKYMPRGANJUTMNVTOR".find(s)].split(",")))

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

읽을 수있는 버전 : 온라인으로 사용해보십시오!

어떻게 '참고 states문자열은 49 자 이내입니다. 겹치는 문자를 가능한 한 하나로 접어서 ( MDDCCAASSC…) 생략NY, NC, PA, TX, VA, WI 하고 모두 했습니다 -1.

목록에서 codes, 12345많은 숫자와 의미 678평균 (즉-5) 많은 편지를.


1

C (gcc) , 473 469 바이트

-4 바이트의 ceilingcat 덕분입니다.

첫 번째 미약 한 시도. 줄을 크게 줄이는 방법이 있다고 생각합니다.

n,c,d,i;f(char*s){n=0;for(s=strstr("AKnIAnMSnMPnVTnAS`AZrGArWArARfKSfKYfLAfNDfORfCAlCTtDCsFLpILmINbcdqMDkMInojMNhNViNHgNJuNMhxNYyNCyPAyTXyVAyWIyOHoOKdPRxRIaSCoeTNvUTw",s)+2;s[n]>90;n++);for(s="4    3-3  3A   3B   3C   3 1B 3 C  3 4  3-C  2A-3 1B A21B4  1BA3 B 5  C 3  C 4  C A2 C3   C4   B-4  B-5  A2-C A2-2AA2 1BC-3  C-4  "+(s[rand()%n]-96)*5,n=5;d=c=*s++,n--;)for(c>57?i=c-64,c=65:c>47?i=c-48,c=48:(i=1);i--;putchar(d))while(i&&index("IOQ",d=rand()%(c>57?26:10)+c));}

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


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