우편 배달


12

방금 우체부로 일을했고 그것을 지키기 위해 당신의 도움이 필요합니다. 우편물을 배달하기 전에 많은 우편물을 주문해야합니다.

거리는 거리의 시작 부분에서 1부터 시작하여 순서대로 번호가 매겨지며 끝까지 숫자를 건너 뛰고 순서는 왼쪽에 홀수이고 오른쪽에는 짝수입니다. 플러스 주택은 나중에 추가되었으므로 시민 번호에 문자가 추가 될 수도 있습니다.

상자에는 도시의 모든 우편물이 들어 있으므로 거리의 우편물 만 선택해야합니다.

우편을 더 빨리 주문하려면 도움이 필요합니다. 내가 묻는 것은 함수 또는 전체 프로그램을 작성하는 것입니다
.-거리 이름.
-내 길을 따라 주문 된 시민 번호 목록.
-주소 목록 (메일 상자를 나타냄).

그리고 내 거리의 주소 만 포함 된 주소 목록을 시민 번호 목록에 따라 순서대로 출력하십시오.

주소는 다음과 같은 형식입니다.

 Person Name/n   
 CivicN Street Name

여기서 CivicN는 a로 따라야 할 수 '/'와 대문자 (10 10 / B)이다. 원하는 경우 소문자를 사용할 수 있습니다.

거리 이름이 겹치는 경우 다른 거리로 간주됩니다.

Church Road  != Saint Lorenz Church Road 

단순성을 위해 나머지 주소는 생략합니다 (모든 메일에서 동일하다고 가정).

가장 빠른 답변을 얻으려면 서신을 빨리 보내야합니다.

예:

레이아웃 :

 1 1/B     3 5 7      9 11 13     
 ==============================    
       2 4       4/B 6           

입력 :

"Tea Avenue"
["1","1/B","2","4","3","5","7","4/B","6","9","11","13"]
["Mrs. Pie O. Pinky\n6 Tea Avenue","Ms. Kita I. Omeeha\n6 Tea Avenue","Mr. Raile A. Lee\n26 Uea Grove","Odd O. Nic\n76 Mira Road","Mrs. Fuel Tee\n78 Uea Grove","Ny O. Ondip\n55 Uea Grove","Mrs. Black\n67 Uea Grove","Ollie E.\n11 Tea Avenue","Mr. Urna Li\n75 Mira Road","Ms. Polly\n2 Tea Avenue"]

출력 :

Ms. Polly
2 Tea Avenue  

Mrs. Pie O. Pinky 
6 Tea Avenue 

Ms. Kita I. Omeeha
6 Tea Avenue 

Ollie E.
11 Tea Avenue

입력 :

"Church Road"
["1","3","5","5/B","2","4","7","7/B","6","9","9/B","11","11/B"]
["Billy Ray V.\n5 Church Roadside East","Ms. Mia\n5 Church Road","Mrs. Dadeos\n9/B Church Road","Dr. Ymin U.\n3 Church Road","Atty. Nerou\n3 Church Road","Ollie A. Chaim\n6 Saint Lorenz Church Road","Ms. Rose\n5 Church Road","Alf Taohy\n79 Berry Road","Ms. Ootr E.\n5 Saint Lorenz Church Road","Lol E.\n21 Berry Road","Ms. Norton\n2 Church Road"]

출력 :

Dr. Ymin U.
3 Church Road

Atty. Nerou
3 Church Road

Ms. Mia
5 Church Road

Ms. Rose
5 Church Road

Ms. Norton 
2 Church Road" 

Mrs. Dadeos
9/B Church Road

테스트 생성기 : 온라인으로 사용해보십시오! string_wrapper_left / right 및 separator를 변경하여 형식을 수정하십시오.

규칙 :
-표준 허점은 금지되어 있습니다.
-표준 입출력 방법.
-바이트 단위의 최단 답변이 승리합니다.


5
나는 당신이 우리를 여행하는 판매원 문제를 해결하도록 요구 할까봐 두려웠다.
Jitse

3
@AZTECCO 감사합니다! 데모 코드뿐만 아니라 게시물에 여러 테스트 사례를 포함시키는 것이 좋습니다.
Jitse

2
" 그렇습니다. 서로 겹칠 수 있습니다. 서로 다른 거리입니다. "또는 " 아니오. 겹칠 수 없습니다. 이런 테스트 사례를받지 않습니까?" 당신의 문장은 지금 모순됩니다. ;)하지만 난 당신이 도전에 그것을 지정해도 상관 없습니다. 그런 테스트 사례가 가능하다는 것을 의미한다면, 05AB1E 답변을 계정에 맞게 편집하겠습니다. 그리고 @Jitse는 그 경우에도 파이썬 답변을 바꿔야 할 것입니다.
Kevin Cruijssen '10

2
아 .. "예, 서로 겹칠 수 있습니다. 다른 거리로 간주됩니다"
AZTECCO

2
확인할 수 있습니다. 나는 몇 년 전에 토요일 우체부로 일했었다. :) 내 배달 지구의 거의 모든 거리에서 자전거를 도로 가장자리에 주차하고 한 방향으로 걸어 모든 홀수를 전달한 다음 반대편을 뒤로 걸어 모든 짝수 번호를 끝내는 것이 더 효율적이었습니다. 내 자전거에서 다시. 그런 다음 큰 거리, 크리스마스와 같은 번잡 한 기간 또는 많은 상업용 폴더와 함께 다시 한 번에 전체 거리의 모든 게시물을 한 번에 운반 할 수 없었기 때문에 보통 몇 번 사이에 자전거로 걸어 가야했습니다 ..> .>
Kevin Cruijssen 's

답변:


4

젤리 , 13 바이트

,⁵KỴṪ⁼ɗƇ@ɗ€ẎY

지정된 거리의 시민 번호 목록, 우편함의 주소 목록 및 거리 이름 등 세 가지 인수를 허용하는 전체 프로그램-주어진 시민 번호 순서대로 전달해야하는 주소를 인쇄합니다. .

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

어떻게?

,⁵KỴṪ⁼ɗƇ@ɗ€ẎY - Main link: civic numbers, addresses
          €   - for each (civic number):
         ɗ    -   last three links as a dyad - i.e. f(civic number, addresses):
,⁵            -     pair (the civic number) with 3rd program input (the street name)
  K           -     join (that) with a space -- i.e. X=civic number+' '+street name
        @     -     with swapped arguments i.e. f(addresses, X):
       Ƈ      -       filter (the addresses) keeping those for which:
      ɗ       -         last three links as a dyad - i.e. f(address, X):
   Ỵ          -           split (address) at newlines
    Ṫ         -           tail (get the second line)
     ⁼        -           equals (X)?
           Ẏ  - tighten (the list of lists to a single list)
            Y - join with newlines

4

05AB1E , 15 13 12 바이트

ε²ðýUʒ¶¡Xk]˜

@JonathanAllan 의 Jelly 답변 을 포팅하여 -2 바이트 이므로, 그를 찬성해야합니다! @Grimy
덕분에 -1 바이트 .

입력은 [시민 번호 목록], 거리 이름, [주소 목록] 순서로 이루어집니다.

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

설명:

ε       # Map over the (implicit) input-list of civic numbers
 ²      #  Push the second street-input
  ðý    #  And join the two values by a space
    U   #  Pop and store this street + num string in variable `X`
 ʒ      #  Filter the (implicit) input-list of addresses by:
  ¶¡    #   Split on newlines
    Xk  #   Get the index of string `X` (street + num) in this list,
        #   which will be either -1 (not found), 0 (first address-line), or 
        #   1 (second address-line), and only 1 is truthy in 05AB1E
]       # After both the inner filter and outer map:
 ˜      # Flatten the array to remove any empty inner lists
        # (after which the result is output implicitly)

도움을 주셔서 감사합니다!
AZTECCO

"Billy Ray V. \ n5 Church Roadside East"를 추가 한 겹침 테스트 케이스로 테스트 케이스를 편집했습니다. 출력에 나타나지 않아야합니다. 답을 수정하십시오. 불편을 끼쳐 드려 죄송합니다. 앞으로의 과제에 더 많은 관심을 기울일 것입니다.
AZTECCO

@AZTECCO를 사용하여 이제 수정되어야 검댕으로 더럽혀진 최초의 골프 제안.
케빈 Cruijssen

시간 내 줘서 고마워!
AZTECCO

2

자바 스크립트 (Node.js) , 58 바이트

(s,n,a)=>n.flatMap(n=>a.filter(x=>x.split`
`[1]==n+' '+s))

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

댓글

(s, n, a) =>          // s = street name, n[] = civic numbers, a[] = addresses
  n.flatMap(n =>      // for each civic number n in n[]:
    a.filter(x =>     //   for each address x in a[]:
      x.split`\n`[1]  //     keep it if the 2nd part is equal to
      == n + ' ' + s  //     n + space + expected street name
    )                 //   end of filter()
  )                   // end of flatMap() (empty entries are discarded)

첫 번째 답변! 당신은 내 직업을 구 했어요! 개선을위한 감사합니다 btw
AZTECCO


2

펄 5 , 51 바이트

sub{my($r,$a,@B)=@_;map{$n=$_;grep/
$n $r$/,@B}@$a}

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


"Billy Ray V. \ n5 Church Roadside East"를 추가 한 겹침 테스트 케이스로 테스트 케이스를 편집했습니다. 출력에 나타나지 않아야합니다. 답을 수정하십시오. 불편을 끼쳐 드려 죄송합니다. 앞으로의 과제에 더 많은 관심을 기울일 것입니다.
AZTECCO

추가 1 바이트 + 고정 $정규식 끝에 앵커
나우 Fouilleul를

시간 내 주셔서 감사합니다
AZTECCO


1

파이썬 3, 79 85 바이트 ( 오징어 덕분에 )

d=lambda s,n,a:n and[k for k in a if k.split('\n')[1]==n[0]+' '+s]+d(s,n[1:],a)

낡은:

d=lambda s,n,a:[k for k in a if k.split('\n')[1]==n[0]+' '+s]+d(s,n[1:],a)if n else[]

1
이것이 어떻게 든
오징어

쿨, 나는 당신이 'and'를 사용하여 그런 출력을 만들 수 있다는 것을
몰랐습니다

1

파이썬 3 , 65 바이트

lambda s,n,m:[a for i in n for a in m if a.endswith('\n%s '%i+s)]

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

파이썬 2에서도 작동합니다.

i시민 번호 목록의 각 번호 에 n대해이 기능은 메일 목록의 모든 주소 a를 반복 m하여 시민 번호 i와 거리 이름 의 조합이 s일치하는 주소 를 유지합니다 a. 정렬되고 필터링 된 목록이 생성됩니다.


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