바에서 바코드를 작성할 수 있습니까?


12

piNapple 바, 멜버른에 오신 것을 환영합니다. 랩톱, 칵테일 샘플링 및 프로그래밍이 점점 더 나빠지는 최고의 코드 골퍼들이 여기 있습니다.

마지막 요점을 강조 할 특별한 필요성이 있다고 생각합니다. 점점 나쁘게. 알코올은 프로그래밍 로직에 재미있는 일을 할 수 있습니다.

그래서 몇몇 골퍼들은 점점 더 이국적인 언어로 중첩 된 퀴네를 시도하고있었습니다. 누군가 INTERCAL에서 4 차 명령을 내 렸습니다. 그런 다음 알코올의 흐름이 중단되었습니다. 그는 실수로 완전히 다른 컴퓨터에서 바코드 판독 알고리즘을 실수로 삭제했습니다. 어떤 네트워크에도 연결되지 않았습니다! (어린이-INTERCAL하지 마십시오. 당신을 위해. 당신의 가족을 위해.)

일반적으로 큰 문제는 아닙니다. 그러나 일부 골퍼는 몇 년 전에 시스템을 설계했지만 바코드가 없었습니다. 1이 줄이고 0이 공백이라고 가정하면 모두 101로 시작하고 1001로 끝납니다. 중간의 모든 것은 7 비트 ASCII로 인코딩됩니다.

Barkeep에는 프로그램에 따라 STDIN, 인수 또는 파일을 통해 1과 0의 임의 길이 (300 비트 미만)의 문자열을 반환하는 멋진 바코드 리더가 있습니다. 그리고 병을 잡는 방법에 따라 앞으로 또는 뒤로 올 수 있습니다. 프로그램은 STOUT 또는 파일을 통해 바코드 중간에서 문자열을 반환해야합니다.

불행히도, 그는 스토리지에 많은 돈을 쓰지 않았으므로 가장 짧은 소스를 가진 프로그램이 선택되고 다른 골퍼들로부터 무료 음료와 술에 취한 프로그래밍 튜토리얼을 얻습니다.

행운을 빕니다!


7
다시 말해서, 입력이 후자 101...1001인지 또는 1001...101후자 인지를 결정한 다음 중심을 바이트로 묶습니다.
John Dvorak

1
완전히 정확합니다. 하지만 그게 재미가 뭐야? : p
lochok 2016 년

답변:


9

GolfScript, 30 자

.-1%]$1=3>7/);{{1&}%2base}%""+

입력은 STDIN에 제공됩니다. :

> 1011000001100001010000111001
ABC

> 1001110000101000011000001101
ABC

1

J-35 바이트

_7(a.{~#.)\_4}.3}.|.^:([:-.2{])"."0

나중에 설명 :).


4
얼마 후? ;-)
Tim

0

피 이스 , 21

smCid2c:?zv@z2_z3_4 7

설명:

        ?zv@z2_z           Input if 3rd character of input is 1, else reversed input.
       :        3_4        Slice out the middle portion, ASCII of the above string.
      c             7      Chop into 7 character chunks.
 mCid2                     Convert each chunk from binary to integer, then to a character.
s                          Sum up the characters into a string and print.

질문이 언어보다 오래되었지만 질문의 존재는 어쨌든 언어 디자인에 영향을 미치지 않았습니다. 왜냐하면 나는 오늘 전에 질문을 보지 않았기 때문입니다.

여전히 규칙은 규칙이므로 CW로 만들고 있습니다.


좋아, 그럼 CW로해볼 게
isaacg

0

AWK, 116 바이트

/101$/{r=1}{L=split($0,a,"")
n=r?L-2:3
N=r?-1:1
while(d<L-7){c=0
for(k=0;k<7;k++){c*=2;c+=a[n+=N];d++}printf"%c",c}}

나는이 질문이 많은 사랑을 보지 못했다는 것을 알고 있지만,보고 답하는 것에 대해 궁금했다 AWK. 이것은 모든 영리한 것은 아니지만 효과가있는 것으로 보이며 골프를 할 분명한 영역을 보지 못했습니다. 필자는 원래 필요할 때 문자열을 뒤집었지만 증분 논리를 조정하여 뒤로 이동하는 것보다 더 많은 바이트를 추가했습니다.

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