Programowanie za pomocą Sporadic Shift Key


39

Coś jest nie tak z klawiaturą. ShiftKlucz ma własny rozum. Za każdym razem, gdy wpisujesz znak, nie masz pojęcia, czy wyjdzie on przesunięty, czy nie (chociaż jest to 50-50). Oprócz standardowych klawiszy znaków nic na klawiaturze nie działa. Nie ma myszy ani innych środków wprowadzania.

W jakiś sposób wiesz, że jedynym sposobem na naprawienie tego jest napisanie programu, który wypisuje Dear Computer, please stop giving me shift!na standardowe wyjście. Na szczęście twoje IDE jest otwarte i możesz uruchomić program, ale oczywiście podczas pisania nie będziesz wiedział, które znaki zostaną przesunięte.

Jakiej sekwencji naciśnięć klawiszy użyłbyś do napisania programu, który ma najlepszą możliwą szansę pracy przy pierwszej próbie?

Detale

Używasz standardowej klawiatury QWERTY , więc możesz nacisnąć 50 znaków.

Wersje bez zmian (tylko 47):

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

Wersje przesunięte (tylko 47):

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

Ostatnie 3 klawisze to Enter, Tabi Space, które są takie same, przesunięte i nie przesunięte.

Sekwencja N tych znaków ma 2 N - (liczba znaków białych znaków), które można by uzyskać, gdybyś wpisał je za pomocą wadliwej klawiatury. Na przykład pisanie A Space mmogło dać wynik a mlub A mlub a Mlub A M.

Napisz program o tych znakach i spójrz na wszystkie 2 N - (liczba białych znaków) możliwych kombinacji przesunięć. Im więcej kombinacji, Dear Computer, please stop giving me shift!tym lepiej. Twój wynik to liczba działających kombinacji (prawidłowe programy) podzielona przez całkowitą liczbę kombinacji. Najwyższy wynik wygrywa.

Notatki

  • W przypadku prawidłowych programów drukowanie tylko Dear Computer, please stop giving me shift!i wyłącznie na standardowe wyjście powinno być jedynym efektem ubocznym.
  • Prawidłowe programy nie powinny pobierać danych wejściowych.
  • Nieprawidłowe programy mogą zrobić wszystko.
  • Komentarze mogą być używane w dowolnym miejscu.
  • Odpowiedzi na spacje nie mogą wygrać, ponieważ uzyskanie 100% wyniku jest (względnie) trywialne. Nadal możesz przesłać rozwiązanie Whitespace dla zabawy.
  • Twój program musi mieć maksymalnie 1024 znaki.

Aktualizacja: zmieniono, Stop giving me shift!aby Dear Computer, please stop giving me shift!pozwolić na bardziej złożone odpowiedzi. W razie potrzeby istniejące odpowiedzi mogą pozostać takie, jakie są.


2
+1, to wielkie wyzwanie, ale szkoda, że ​​nie dałeś nam dłuższego ciągu wyjściowego. Pomyślałem o kilku sprytnych sztuczkach, ale wszystkie wymagają więcej niż 18 znaków we wszystkich językach, które znam.
Nathaniel

2
@ Calvin'sHobbies, ale ... co z obecnymi odpowiedziami?
John Dvorak

1
@ Calvin'sHobbies To nie jest! Ograniczenie 1024 również bardzo dobrze temu zapobiega. Biorąc to wszystko pod uwagę, głosuję za zakończeniem tego, ponieważ niejasne jest to, o co prosisz. Proszę nie zmieniać specyfikacji, która jest niekorzystna dla większości odpowiedzi
Optimizer

1
@ Calvin'sHobbies Szkoda, że ​​istnieje limit 1024 znaków. Będę musiał przemyśleć moją odpowiedź ...
Justin,

1
@Optimizer Przynajmniej nie wygrają.
jimmy23013

Odpowiedzi:


46

Jabłkowy, 2 0 (100%)

Wierzę, że mogę tutaj uzyskać doskonały wynik:

  • Edytor Applescript (moje IDE) automatycznie konwertuje wszystkie słowa kluczowe na małe litery po kompilacji / uruchomieniu
  • Ponadto określone nazwy zmiennych Handler są niewrażliwe przypadku - na przykład, gdy teleskopowa myFuncjest określona, wówczas IDE automatycznie konwersji MYFUNC, myfunc, MyFuNcitp odniesienia domyFunc
  • Używałem tylko znaków alfabetu, spacji i znaków nowej linii, więc nie muszę się martwić o przesunięte cyfry i znaki interpunkcyjne.

Oto jest:

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

Dzięki pomocy @kernigh i @paradigmsort jest to teraz 1020 bajtów, po prostu piszczenie poniżej limitu 1024 bajtów!

Wyjaśnienie:

  • Znaki dla ciągu wyjściowego są generowane za pomocą string id <n>, który zwraca znak odpowiadający wartości asciin
  • Ponieważ unikamy cyfr, każda z nich nmusi być generowana w bardziej fundamentalny sposób. W szczególności generujemy każdy nzliczając listę, a następnie dodając kolejny element do tej listy. repeat with q in system infoPozwala nam zrobić to 16 razy, jak system infozawsze zwraca listę 16 poz.
  • Korzystając z podobnej techniki, dodajemy kolejno każdy znak końcowego ciągu do listy.
  • Wreszcie ostatnia lista jest przymuszana texti drukowana.

Wynik:

Korzystając z osascriptinterpretera, ale Edytor Applescript działa równie dobrze:

$ # 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
Bardzo bardzo fajne! Mam nadzieję, że uda ci się uzyskać 1024. Czy możesz trochę wyjaśnić kod?
Calvin's Hobbies

2
@ Calvin'sHobbies Applescript ma być jednym z najbardziej czytelnych języków - naprawdę tego nie rozumiesz? ;-) Spróbuję dodać wyjaśnienie za chwilę ...
Cyfrowa trauma

2
Proszę zamieścić wersję gry w golfa, bez wcięć i bez nazwy end name. W tej chwili muszę sed -e 's/^ *//' -e 's/^end.*/end/' dearcase.scpt | wc -cgo policzyć. Możesz także przejść z 1044 na 1037, zmieniając count of ana count ai usuwając logz log f as text. Testuję na starym systemie OS X 10.4, w którym logpolecenie ma pusty wynik; osascriptdrukuje tylko wynik, a nie dziennik zdarzeń, więc nie otrzymuję danych wyjściowych, chyba że usunę je log.
kernigh

3
Zmiana c, aby zadzwonić do j dwa razy zamiast trzykrotnie i odpowiednio zaktualizować strony wywołujące, oszczędza 7 znaków i obniża limit.
paradigmsort

3
# Interpret all upper case: $ tr A-Z a-z- Argumenty są do tyłu, prawda?
Izkata

16

PHP, 2 ^ -12

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

PHP jest PHP, kapitalizacji echo, ucwordsi strtolowernie mają znaczenia. Wywołania ucwordsi strtolowerupewnienie się, że wielkość liter nie zmieni wyniku.

Dlatego jedynymi znakami, których nie można zmienić, są ((,)).(!);(10 znaków).

Każda para cytaty posiada również 50% szans na prawidłowy ( ''i ""są ważne, ale '"i "'nie są), więc każdy dodając kolejne potęgi dwójki.


2
@ edc65 ucwordsrozpoczyna pierwszą literę każdego słowa
wielką literą

1
dobre IDE doda dla ciebie poprawne cudzysłowy (zawsze skończysz z ''lub "", podobnie jak nawiasy zamykające, więc chociaż nadal masz 50% szansy (, )powinno to być automatyczne.
WOUNDEDStevenJones

strzelaj, nie możesz użyć żadnego rodzaju klawiszy nawigacyjnych (strzałek), więc nawet jeśli IDE wykonało autouzupełnianie poprawnie, musisz wpisać ten sam znak ponownie, w przeciwnym razie wstawi on nowy (zły), tak jak poniżej: strtolower("Dear Computer, '"0)...
WOUNDEDStevenJones

1
@WOUNDEDStevenJones Uważam, że poleganie na funkcjach IDE byłoby liczone jako oszustwo.
Ingo Bürk

1
A <?co na początku programu?
Michael Mior,

5

Uwaga: To właściwie 3 odpowiedzi w jednym. Nie widziałem sensu dzielenia go na wiele odpowiedzi, gdy są one tak dosłownie tłumaczone. Jeśli powinny być podzielone, daj mi znać, a ja się tym zajmę.

Po ponownym przeczytaniu specyfikacji zdaję sobie sprawę, że to faktycznie jest nieprawidłowe. Każda odpowiedź ma> 4000 znaków. Ale i tak zostawię to tutaj, ze względu na inną metodę.

Python 2, 2 ** - 41

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

Aby zapewnić inny styl rozwiązania. Koduje wartość ascii każdego znaku w tabulatorach, podzielonych na spacje. Liczba zakładek to liczba wartości ascii.

To jest identyczne rozwiązanie w

Pyth, 2 ** - 11

j""mCldc"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               "d

Inne identyczne rozwiązanie - z wyjątkiem spacji zastąpionych znakami nowej linii - w

Golfscript, 2 ** - 8

'                                                                                                                                                                                                                                                                               









































                                                                                                                                    'n/{,}%+

Być może kodowanie w formacie binarnym działałoby w GolfScript. TAB jako 1, SPACJA jako 0 lub odwrotnie.
Justin

3
Nie jestem jedynym, który widzi większość odpowiedzi GolfScript jako białe znaki, prawda?
Pharap

1
@Pharap To podstęp. To cała masa kart oddzielonych znakami nowej linii. Jeśli zejdziesz na dół i przewiniesz w prawo, zobaczysz, gdzie kończy się sznurek i robi magię, aby przekształcić go w ascii.
Justin


4

Biała spacja (645 bajtów, prawdopodobieństwo 2 ^ 0)

Ponieważ ten program używa tylko tabulatorów, spacji i znaków nowej linii (na które nie ma wpływu przesunięcie), daje 100% współczynnik sukcesu.

             





















































































  

Uruchom program


1
Pamiętaj jednak, że zgodnie z zasadami jest to konkurencja poza konkurencją.
Ingo Bürk

3

CJam, 2 -9 szansa 739 bajtów

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

base64:

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

Oparty na idei Optymalizatora i odpowiedzi Quincunx.


3

Python 2, 2-20 szansa

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

print, S, +, !, I .lower()wszystko musi być poprawna wersja; to 18 znaków. Dwa cudzysłowy dla ciągów również muszą być wyrównane, co daje dwie kolejne potęgi dwóch.

W przypadku każdego z nich top giving me shift, jeśli jest przekonwertowany na wersję kapitałową, konwertujemy go na małe litery i działa poprawnie.

Niestety nie mogę skorzystać ze sprytnego Pythona capitalize(), ponieważ wymaga to jeszcze jednej postaci.


Jeśli to pomaga, wyrażenie jest teraz dłuższe (ale normalnie nie jest pisane dużymi literami).
Calvin's Hobbies

@ Calvin'sHobbies Widziałem to. To nie pomaga; szkodzi.
Justin

2

VisualBasic.net 2 ^ -18

Krytyczne znaki:. („DearC” + ”,!”. ())

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

Testowane w LINQPad, język = „Program VB”


Myślę, że studio wizualne automatycznie poprawi dla ciebie obudowę.
Pharap

@Pharap, ale obudowa poza cudzysłowami nie stanowi problemu ... VS nie poprawiłoby „(” zmieniono na „9”
edc65,

1
W takim przypadku coś bardziej przydatnego: możesz pozbyć się potencjalnego przypadku, >zamiast dostać się i .zmienić na . Console.Write(string)Write(string)(string).ToLower()LCase(string)
Pharap

1

Pyth, 2 ** - 15

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

Nie mogę znaleźć wersji Pytha lower(), więc pożyczę od Pythona. Znaki, które nie mogą być wymieniane są +"S"$, !i .lower(), w sumie 14 znaków. Cytaty po $must must pasują, dodając kolejną potęgę 2.


Pyth nie ma lower()- nie był wystarczająco przyzwyczajony. Prawdopodobnie powinienem dodać to z powrotem.
Isaacg

1

Rant, 2-21

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

Seria metapatternów i capswywołań wymusza prawidłowe formatowanie. Nazwy funkcji i argumenty nie uwzględniają wielkości liter.

Wersja online



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

Myślałem o mojej odpowiedzi, zanim dotarłem do „50 znaków, w tym tylko Enter, Tab, Spacja”. Więc mój nie jest ważny.

Wydaje się, że kluczową kwestią jest język programowania bez rozróżniania wielkości liter. Alternatywnie, gdybyś mógł użyć prawdziwej standardowej klawiatury QWERTY (w tym Caps Lock, inne Shift, Backspace i okres Numpad), byłyby tylko 2 niezbędne 50% szansy, co skutkowałoby tylko 2 dodatkowymi naciśnięciami klawiszy na awarię. Moja nieprawidłowa odpowiedź dla aplikacji konsoli C # wskazująca faktyczne naciśnięcia klawiszy:

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)

76 minimalnych pras z tylko 2 niezbędnymi 50% szansami


0

Excel, 2–11

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

Przypadek PROPERi LOWERnie ma znaczenia. +Wymagane jest wprowadzenie formuły rozpoczynającej się od automatycznego wstawiania =. Tak tylko (, ", ,, ), &, !może złamać.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.