산발적 Shift 키를 사용한 프로그래밍


39

키보드에 문제가 있습니다. Shift키는 자신의 마음을 가지고 있습니다. 문자를 입력 할 때마다 문자가 이동되는지 여부를 알 수 없습니다 (50-50이지만). 표준 문자 키 외에 키보드의 아무것도 작동하지 않습니다. 마우스 나 다른 입력 수단이 없습니다.

어떻게 든 문제를 해결하는 유일한 방법은 Dear Computer, please stop giving me shift!stdout으로 출력하는 프로그램을 작성하는 것입니다 . 운 좋게 IDE가 열려 있고 프로그램을 실행할 수 있지만, 입력 할 때 어떤 문자가 바뀌는 지 알 수 없습니다.

첫 번째 시도에서 가장 가능성이 높은 프로그램을 작성하기 위해 어떤 키 누르기 순서를 사용 하시겠습니까?

세부

표준 QWERTY 키보드를 사용하고 있으므로 50 개의 문자 키를 누를 수 있습니다.

시프트되지 않은 버전 (47 만) :

`1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./

시프트 된 버전 (47 만) :

~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?

마지막 3 키는 Enter, Tab,와 Space같은이 이동하고 시프트되지되는.

이 문자들 중 N 개의 시퀀스에는 잘못된 키보드로 입력 한 경우 2 개의 N-(공백 문자 수) 이 출력 될 수 있습니다. 예를 들어, 입력은 A Space m굴복 수도 a m또는 A m또는 a M또는 A M.

이 문자를 프로그램에 작성하고 2N-(공백 문자 수) 가능한 시프트 조합을 모두보십시오. Dear Computer, please stop giving me shift!더 좋은 조합을 만들 수록 더 좋습니다. 점수는 작업 조합 (유효한 프로그램) 수를 총 조합 수로 나눈 값입니다. 가장 높은 점수가 이깁니다.

노트

  • 유효한 프로그램의 경우 정확하게 인쇄 Dear Computer, please stop giving me shift!하고 stdout에 인쇄 하는 것이 유일한 부작용은 아닙니다.
  • 유효한 프로그램은 입력하지 않아야합니다.
  • 잘못된 프로그램은 무엇이든 할 수 있습니다.
  • 주석은 어디에서나 사용될 수 있습니다.
  • 100 % 점수를 얻는 것이 (상대적으로) 사소하기 때문에 공백 답변은 이길 수 없습니다. 당신은 여전히 ​​재미를 위해 공백 솔루션을 제출할 수 있습니다.
  • 프로그램은 최대 1024 자 여야합니다.

업데이트 : 더 복잡한 답변을 허용하도록 변경 Stop giving me shift!되었습니다 Dear Computer, please stop giving me shift!. 원하는 경우 기존 답변이 그대로 유지 될 수 있습니다.


2
+1, 그것은 큰 도전이지만, 우리에게 더 긴 출력 문자열을 주었으면 좋겠습니다. 나는 몇 가지 영리한 트릭을 생각했지만 모두 내가 알고있는 모든 언어로 18 자 이상을 차지합니다.
Nathaniel

2
@ Calvin'sHobbies 그러나 ... 현재 답변은 어떻습니까?
John Dvorak

1
@ Calvin'sHobbies 아니에요! 그리고 1024 제한은 그것도 아주 잘 막습니다. 이 모든 것을 감안할 때, 나는 이것이 당신이 요구하는 것을 불분명하게 닫기 위해 투표하고 있습니다. 대부분의 답변에 불리한 사양을 변경하지 마십시오
Optimizer

1
@ Calvin'sHobbies 1024 자 제한이 너무 나쁩니다. 나는 내 대답을 다시 생각할 필요가있다.
Justin Justin

1
@Optimizer 적어도 그들은 이길 수 없습니다.
jimmy23013 년

답변:


46

Applescript, 2 0 (100 %)

나는 여기에서 완벽한 점수를 주장 할 수 있다고 생각합니다.

  • Applescript 편집기 (내 IDE)는 컴파일 / 실행시 모든 키워드를 소문자로 자동 변환합니다
  • 또한, 정의 변수와 핸들러 이름은 대소를 구분하지 않습니다 - 핸들러가 예를 들어 myFunc정의, 다음 IDE가 자동으로 변환됩니다 MYFUNC, myfunc, MyFuNc, 등을 참조로myFunc
  • 알파벳 문자, 공백 및 줄 바꿈 만 사용했기 때문에 숫자와 문장 부호가 바뀌는 것에 대해 걱정할 필요가 없습니다.

여기 있습니다 :

global f
on j at a
set end of a to j
end
on c at a
j at a
j at a
end
on k at a
repeat with q in system info
j at a
end
end
on w at a
set d to count a
j at a
return string id d
end
on z at a
set end of f to a
end
set h to space
set y to h as list
k at y
k at y
set x to w at y
c at y
c at y
c at y
c at y
c at y
set q to w at y
k at y
c at y
c at y
copy y to b
c at y
set s to w at y
set d to w at y
set f to d as list
k at b
k at b
set a to w at b
c at b
j at b
set e to w at b
set y to w at b
set g to w at b
set d to w at b
set i to w at b
c at b
set l to w at b
set m to w at b
set n to w at b
set o to w at b
set p to w at b
j at b
set r to w at b
z at e
z at a
z at r
z at h
z at s
set s to w at b
set t to w at b
set u to w at b
set v to w at b
z at o
z at m
z at p
z at u
z at t
z at e
z at r
z at q
z at h
z at p
z at l
z at e
z at a
z at s
z at e
z at h
z at s
z at t
z at o
z at p
z at h
z at g
z at i
z at v
z at i
z at n
z at g
z at h
z at m
z at e
z at h
z at s
z at d
z at i
z at y
z at t
z at x
f as text

@kernigh와 @paradigmsort의 도움 덕분에 이제는 1020 바이트로 1024 바이트 제한 이하로 떨어졌습니다!

설명:

  • 출력 문자열 string id <n>의 문자는를 사용하여 생성되며 , 이는 ASCII 값에 해당하는 문자를 반환합니다.n
  • 우리는 숫자를 피하기 때문에 n보다 기본적인 수단으로 각각 을 생성해야합니다. 특히 우리 n는 목록을 세고 그 목록에 다른 항목을 추가하여 각각 을 생성 합니다. 는 repeat with q in system info등, 우리가이 16 시간을 수행 할 수 있습니다 system info항상 16 항목의 목록을 반환합니다.
  • 비슷한 기술을 사용하여 최종 문자열의 각 문자를 차례로 목록에 추가합니다.
  • 마지막으로 마지막 목록은 강제로 text인쇄됩니다.

산출:

osascript인터프리터를 사용 하지만 Applescript Editor도 다음과 같이 작동합니다.

$ # Interpret as-is:
$ osascript dearcase.scpt
Dear Computer, please stop giving me shift!
$ 
$ # Interpret all lower case:
$ tr A-Z a-z < dearcase.scpt | osascript
Dear Computer, please stop giving me shift!
$ 
$ # Interpret all upper case:
$ tr a-z A-Z < dearcase.scpt | osascript
Dear Computer, please stop giving me shift!
$
$ # Interpret random case for each letter:
$ while read; do for ((i=0;i<${#REPLY};i++)); do c="${REPLY:i:1}"; if ((RANDOM%2)); then printf "%s" "$(tr a-z A-Z <<< "$c")"; else printf "%s" "$(tr A-Z a-z <<< "$c")"; fi; done; echo; done < dearcase.scpt | osascript
Dear Computer, please stop giving me shift!
$ 

2
매우 시원합니다! 코드를 1024까지 얻을 수 있기를 바랍니다.
Calvin 's Hobbies

2
@ Calvin'sHobbies Applescript는 가장 읽기 쉬운 언어 중 하나입니다. 실제로 이해하지 못하십니까? ;-) 나는 ... 약간의 설명을 추가 할 수 있습니다
디지털 외상

2
들여 쓰기와 이름이없는 골프 버전을 게시하십시오 end name. 있는 그대로 sed -e 's/^ *//' -e 's/^end.*/end/' dearcase.scpt | wc -c계산해야합니다. 또한, 변화에 의해 1037 1044에서 내려받을 수 count of acount a, 및 삭제 log에서 log f as text. log명령이 빈 결과 인 오래된 OS X 10.4 시스템으로 테스트합니다 . osascript이벤트 로그가 아닌 결과 만 인쇄하므로 삭제하지 않으면 출력이 표시되지 않습니다 log.
kernigh

3
c를 3 번이 아닌 j로 2 번 변경하고 필요에 따라 콜 사이트를 업데이트하면 7자를 절약하고 한도 미만이됩니다.
paradigmsort

3
# Interpret all upper case: $ tr A-Z a-z-방아쇠가 거꾸로되어 있지?
Izkata

16

PHP, 2 ^ -12

echo ucwords(strtolower('Dear Computer, ')).strtolower('please stop giving me shift!');

PHP는 PHP의 총액 인 echo, ucwords그리고 strtolower중요하지 않습니다. 에 대한 호출 ucwords과는 strtolower문자열의 경우 출력을 변경하지 않도록.

따라서 변경할 수없는 ((,)).(!);문자 는 (10 자) 뿐입니다 .

인용 부호의 각 쌍은 유효가되는 확률이 50 % ( ''""적용되어, '""'따라서 각각 두개의 다른 전력을 첨가하지 않은).


2
@ edc65 ucwords는 각 단어의 첫 글자를 대문자로 표시합니다.
es1024

1
좋은 IDE를 당신은 오직하게 될 겁니다 (당신을 위해 올바른 닫는 따옴표를 추가 할 것이다 ''또는 ""당신은 여전히 50 %의 확률로 그렇게하지만,뿐만 아니라 닫는 괄호를 ((가), )자동해야한다.
WOUNDEDStevenJones

촬영, 당신은 어떤 종류의 탐색 키 (화살표)를 사용할 수 없으므로 IDE가 올바르게 자동 완성 되더라도 동일한 문자를 다시 입력해야합니다. 그렇지 않으면 다음과 같이 새 (잘못된) 문자를 삽입해야합니다. strtolower("Dear Computer, '"0)...
WOUNDEDStevenJones

1
@WOUNDEDStevenJones IDE 기능에 의존하는 것은 부정 행위로 간주됩니다.
Ingo Bürk

1
무엇에 대한 <?프로그램의 시작?
Michael Mior

5

참고 : 이것은 실제로 3 가지 답변입니다. 나는 그들이 문자 그대로 서로 번역 할 때 여러 대답으로 나누는 요점을 보지 못했습니다. 그들이 분리되어야한다면 알려줘 내가 알아서 할게

사양을 다시 읽은 후에는 이것이 실제로 유효하지 않다는 것을 알고 있습니다. 각 답변의 길이는> 4000 자입니다. 그러나 나는 다른 방법 때문에 어쨌든 여기에 남겨 둘 것입니다.

파이썬 2, 2 **-41

print''.join(map(chr,map(len,'                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              '.split(' '))))

다른 스타일의 솔루션을 제공하기 위해. 각 문자의 ASCII 값을 공백으로 분할하여 탭으로 인코딩합니다. 탭 수는 ASCII 값의 수입니다.

이것은 동일한 솔루션입니다

피스, 2 **-11

j""mCldc"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               "d

공백을 개행 문자로 대체 한 것을 제외하고는 동일한 동일한 솔루션

골프 스크립트, 2 **-8

'                                                                                                                                                                                                                                                                               









































                                                                                                                                    'n/{,}%+

아마도 바이너리로 인코딩하면 GolfScript에서 작동합니다. 1은 TAB, 0은 SPACE 또는 그 반대입니다.
저스틴

3
나는 대부분의 GolfScript 답변을 공백으로 보는 유일한 사람이 아닙니다.
Pharap

1
@Pharap 그것은 속임수입니다. 줄 바꿈으로 구분 된 전체 탭 모음입니다. 끝까지 내려 가서 오른쪽으로 스크롤하면 문자열이 끝나는 위치를 확인하고 마법을 사용하여 문자열을 아스키로 변환합니다.
저스틴


4

공백 (645 바이트, 2 ^ 0 확률)

이 프로그램 이후 에만 (모든 시프트에 의해 영향을받지되는) 탭, 공백 및 개행을 사용하여,이를 100 % 성공률을 준다.

             





















































































  

프로그램 실행


1
그러나 이것은 규칙에 따라 경쟁 외입니다.
Ingo Bürk

3

CJam, 2 -9 기회, 739 바이트

"                         
(lines of space characters)
                                        "N/2fb:c

base64 :

IiAJICAgIAkgCQkgICAJICAKICAgCSAJCSAgIAkJCQkgCQoJCQkJIAkgIAkJIAkJICAJCiAJICAg
IAkgCQkgICAgCSAKICAgCSAJCSAgCSAgICAgIAogCQkJCSAJICAJCSAJIAkJCgkJCSAJICAJCSAJ
CSAJCQkKIAkgCQkgIAkgICAgIAkgCQoJIAkJICAJICAgIAkgICAgCgkgIAkJIAkJCQkgIAkJIAkK
CQkgCSAgCQkgCQkJIAkgIAogICAJIAkJICAgCQkJCSAJCiAJICAgIAkgCQkgICAgCSAKIAkJCQkg
CSAgCQkgCQkgIAogICAJIAkJICAJICAgICAgCgkgCQkgIAkgICAgCSAgICAKCSAgCSAgICAJIAkg
CQkgIAogICAJIAkJICAgCQkJCSAJCgkJCQkgCSAgCQkgCQkgIAkKICAgIAkgCQkgICAJCSAJCQog
ICAJIAkJICAgCQkJCSAJCiAgIAkgCQkgIAkgICAgICAKICAgIAkgCQkgICAJCSAJCQoJCSAJICAJ
CSAJCQkgCSAgCgkJCSAJICAJCSAJCSAJCQkKCSAJCSAgCSAgICAJICAgIAogICAJIAkJICAJICAg
ICAgCgkgCSAgCQkgCQkJIAkJCQkKICAJCSAJCQkJIAkgICAgCQogCQkgIAkgICAgCSAgCQkgCiAg
CQkgCQkJCSAJICAgIAkKICAJICAgIAkgCSAJCQkJIAoJIAkgIAkJIAkJCSAJCQkJCiAgIAkgCQkg
IAkgICAgICAKIAkgCQkgIAkgICAgIAkgCQogICAJIAkJICAgCQkJCSAJCiAgIAkgCQkgIAkgICAg
ICAKICAgIAkgCQkgICAJCSAJCQogCQkgCQkJCSAJICAJICAgCiAgCQkgCQkJCSAJICAgIAkKCQkg
CQkJCSAJICAJIAkJIAoJCSAJICAJCSAJCQkgCSAgCgkJIAkJCQkgCSAgCQkgIAkiTi8yZmI6Yw==

옵티 마이저와 Quincunx의 답변을 바탕으로합니다.


3

파이썬 2, 2-20 기회

print'S'+'top giving me shift!'.lower()

print, S, +, !, 및 .lower()모든 올바른 버전이어야합니다 18 자입니다. 문자열에 대한 두 따옴표도 정렬되어야합니다.

의 어떤 위해 top giving me shift가 자본 버전으로 변환하는 경우, 우리는 소문자로 변환하고 제대로 작동합니다.

슬프게도, 나는 파이썬의 멋진 것을 사용할 수 없습니다 capitalize(). 왜냐하면 하나의 문자가 더 필요하기 때문입니다.


도움이된다면 문구가 더 길어집니다 (그러나 대문자로 표시되지는 않음).
Calvin 's Hobbies

@ Calvin'sHobbies 나는 그것을 보았다. 도움이되지 않습니다. 해를 끼칩니다.
저스틴

2

VisualBasic.net 2 ^ -18

중요 문자 :. ( "DearC"+ ",!". ())

Sub Main
  console.write("Dear C"+"omputer, please stop giving me shift!".tolower())
End Sub

LINQPad에서 테스트, 언어 = "VB 프로그램"


Visual Studio가 케이스를 자동으로 수정한다고 생각합니다.
Pharap

@Pharap 그러나 따옴표 외부의 케이스는 문제가되지 않습니다 ... VS는 '('를 9로
바꿨습니다.

1
이 경우, 더 유용 뭔가 : 당신이 얻을 수있는 잠재적 인 경우 제거 할 수 >대신 .변경하여 Console.Write(string)Write(string)와 교환 (string).ToLower()을 위해 밖으로 LCase(string).
Pharap

1

피스, 2 **-15

+"S"$"top giving me shift!".lower()

Pyth의 버전을 찾을 수 없으므로 lower()Python에서 빌릴 것입니다. 교환 할 수없는 문자는 +"S"$, !.lower()14 개 문자의 총. 뒤에 따옴표 $가 일치하여 2의 또 다른 거듭 제곱이 추가됩니다.


Pyth에는 a가 없습니다 lower()-충분히 사용되지 않았습니다. 아마 다시 추가해야합니다.
isaacg

1

란트, 2-21

[caps:first][?[caps:word][?[caps:lower]Dear Computer][caps:lower], please stop giving me shift!]

일련의 메타 패턴과 caps호출은 올바른 형식을 강제합니다. 함수 이름과 인수는 대소 문자를 구분하지 않습니다.

온라인 버전



1

VB.NET, 2 ^ -12 2 ^ -11

2 -12

Module All
  Sub Main 
    Console.WriteLine StrConv("Dear Computer, ", vbTuesday) & "please stop giving me shift!".ToLower
  End Sub
End Module

2 -11

Imports System.Console

Module All
  Sub Main 
    Write StrConv("Dear Computer, ", vbTuesday)
    WriteLine "please stop giving me shift!".ToLower
  End Sub
End Module

0

나는 Enter, Tab, Space 만 포함하여 '50 자에 도달하기 전에 내 대답에 대해 생각했습니다. 그래서 내 것이 유효하지 않습니다.

대소 문자를 구분하지 않는 프로그래밍 언어가 핵심입니다. 또는 Real 표준 QWERTY 키보드 (Caps Lock, 다른 Shift, Backspace 및 Numpad Period 포함)를 사용할 수있는 경우 필요한 50 % 확률은 2 회에 불과하며, 실패 당 2 번의 추가 키 누름 만 발생합니다. 실제 키 누름을 가리키는 C # 콘솔 응용 프로그램에 대한 잘못된 대답 :

HoldShift(C CpsLockOn onsole)

NumPadPeriod

HoldShift(
CpsLockOff W CpsLockOn rite(" 
CpsLockOff D CpsLockOn ear space
CpsLockOff C CpsLockOn omputer
)

, (repeat with Backspace until correct)

HoldShift( please stop giving me shift!"))

; (repeat with Backspace until correct)

필요한 최소 50 % 확률로 76 개의 최소 프레스


0

엑셀, 2-11

=PROPER("Dear Computer, ")&LOWER("please stop giving me shift!")

의 사례 PROPERLOWER문제가되지 않습니다. +자동 삽입으로 시작하는 수식을 입력하면 필수 =입니다. 그래서 단지 (, ", ,, ), &, !휴식 할 수 있습니다.

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