Вызов Кода — Программирование С Помощью Спорадической Клавиши Shift

  • Автор темы Druz
  • Обновлено
  • 23, Oct 2024
  • #1

Что-то не так с вашей клавиатурой. Сдвиг ключ имеет собственный разум. Каждый раз, когда набираешь символ, ты понятия не имеешь, получится он сдвинутым или нет (хотя это 50 на 50). Кроме стандартных символьных клавиш, на клавиатуре ничего не работает. Здесь нет мыши или других средств ввода.

Каким-то образом вы знаете, что единственный способ исправить ситуацию — это написать программу, которая выводит

 
 Dear Computer, please stop giving me shift! 
to stdout. Luckily your IDE is open and you are capable of running a program, but of course as you type it you won't know which characters will be shifted.

Какую последовательность нажатий клавиш вы бы использовали, чтобы написать программу, которая с наибольшей вероятностью заработает с первой попытки?

Подробности

Вы используете стандартная QWERTY-клавиатура, поэтому вы можете нажать 50 символьных клавиш.

Несмещенные версии (только 47):

Stop giving me shift!

Сдвинутые версии (только 47):

Dear Computer, please stop giving me shift!

Последние 3 клавиши Входить, Вкладка, и Космос, которые являются одинаковыми смещенными и несмещенными.

Последовательность из N этих символов имеет 2N - (количество пробелов) как они могли бы быть выведены, если бы вы набрали их на неисправной клавиатуре. Например, набрав А Космос м возможно, уступил Dear Computer, please stop giving me shift! или A M or a M or A m .

Напишите программу этих символов и просмотрите все ее 2N - (количество пробелов) возможные комбинации смен. Чем больше комбинаций выводится a m the better. Your score is the number of working combinations (valid programs) divided by the total number of combinations. The highest score wins.

Примечания

  • Для действительных программ печать точно ~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>? and nothing else to stdout should be the only side effect.
  • Действительные программы не должны принимать входные данные.
  • Неверные программы могут делать что угодно.
  • Комментарии можно использовать где угодно.
  • Ответы с пробелами не могут выиграть, потому что получить 100% оценку (относительно) тривиально. Вы все равно можете представить решение с пробелами ради развлечения.
  • Длина вашей программы должна составлять не более 1024 символов.

Обновлять: Измененный `1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./ to Dear Computer, please stop giving me shift! чтобы можно было дать более сложные ответы. При желании существующие ответы могут остаться такими, какие они есть.

#вызов кода #ограниченный исходный код

Druz


Рег
28 Jul, 2017

Тем
50

Постов
212

Баллов
482
  • 26, Oct 2024
  • #2

Яблочный скрипт, 20 (100%)

Я считаю, что могу претендовать на высший балл здесь:

  • Редактор Applescript (моя IDE) автоматически преобразует все ключевые слова в нижний регистр при компиляции/запуске.
  • Кроме того, имена определенных переменных и обработчиков нечувствительны к регистру. Например, если обработчик
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     ! 
    is defined, then the IDE will automatically convert & , ) , , и т. д. ссылки на "
  • Я использовал только буквенные символы, пробелы и символы новой строки, поэтому мне не нужно беспокоиться о смещенных цифрах и знаках препинания.

Вот:

(

Благодаря помощи @kernigh и @paradigmsort теперь это 1020 байт, что едва превышает предел в 1024 байта!

Объяснение:

  • Символы для выходной строки генерируются с использованием = , which returns the character corresponding to the ascii value +
  • Поскольку мы избегаем цифр, каждая LOWER has has to be generated by more fundamental means. Specifically we generate each PROPER подсчитав список, а затем добавив в этот список еще один элемент. =PROPER("Dear Computer, ")&LOWER("please stop giving me shift!") allows us to do this 16 times, as 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) всегда возвращает список из 16 элементов.
  • Используя аналогичную технику, мы по очереди добавляем в список каждый символ последней строки.
  • Наконец, этот последний список вынужден Imports System.Console Module All Sub Main Write StrConv("Dear Computer, ", vbTuesday) WriteLine "please stop giving me shift!".ToLower End Sub End Module and printed.

Выход:

Используя Module All Sub Main Console.WriteLine StrConv("Dear Computer, ", vbTuesday) & "please stop giving me shift!".ToLower End Sub End Module interpreter, but the Applescript Editor works just as well:

""N/:,2/Kfb:c ||answer||

PHP, 2^-12

" "N/:,2/Kfb:c

PHP есть PHP, с заглавной буквы caps , [caps:first][?[caps:word][?[caps:lower]Dear Computer][caps:lower], please stop giving me shift!] , и $ don't matter. The calls to .lower() и ! ensure that the case of the strings won't change the output.

Таким образом, единственные символы, которые нельзя изменить, — это +"S"$ (10 characters).

Каждая пара цитат также имеет 50% вероятность того, что они действительны ( lower() and +"S"$"top giving me shift!".lower() действительны, но Sub Main console.write("Dear C"+"omputer, please stop giving me shift!".tolower()) End Sub and capitalize() нет), поэтому каждое из них добавляет еще одну степень двойки.

 

Evgen6630


Рег
02 Apr, 2007

Тем
75

Постов
193

Баллов
578
  • 26, Oct 2024
  • #4

Пробелы (645 байт, вероятность 2^0)

Поскольку эта программа только использует табуляцию, пробелы и символы новой строки (на которые сдвиг не влияет), это дает 100% вероятность успеха.

Запуск программы

 

Viip


Рег
05 Apr, 2004

Тем
93

Постов
202

Баллов
707
  • 26, Oct 2024
  • #5

СиДжем, 2-9 шанс, 739 байт

.lower()

база64:

!

На основе идеи Оптимизатора и ответа Quincunx.

 

Garotym


Рег
01 Feb, 2017

Тем
62

Постов
189

Баллов
519
  • 26, Oct 2024
  • #6

Питон 2, 2-20 шанс

+

S , print , print'S'+'top giving me shift!'.lower() , IiAJICAgIAkgCQkgICAJICAKICAgCSAJCSAgIAkJCQkgCQoJCQkJIAkgIAkJIAkJICAJCiAJICAg IAkgCQkgICAgCSAKICAgCSAJCSAgCSAgICAgIAogCQkJCSAJICAJCSAJIAkJCgkJCSAJICAJCSAJ CSAJCQkKIAkgCQkgIAkgICAgIAkgCQoJIAkJICAJICAgIAkgICAgCgkgIAkJIAkJCQkgIAkJIAkK CQkgCSAgCQkgCQkJIAkgIAogICAJIAkJICAgCQkJCSAJCiAJICAgIAkgCQkgICAgCSAKIAkJCQkg CSAgCQkgCQkgIAogICAJIAkJICAJICAgICAgCgkgCQkgIAkgICAgCSAgICAKCSAgCSAgICAJIAkg CQkgIAogICAJIAkJICAgCQkJCSAJCgkJCQkgCSAgCQkgCQkgIAkKICAgIAkgCQkgICAJCSAJCQog ICAJIAkJICAgCQkJCSAJCiAgIAkgCQkgIAkgICAgICAKICAgIAkgCQkgICAJCSAJCQoJCSAJICAJ CSAJCQkgCSAgCgkJCSAJICAJCSAJCSAJCQkKCSAJCSAgCSAgICAJICAgIAogICAJIAkJICAJICAg ICAgCgkgCSAgCQkgCQkJIAkJCQkKICAJCSAJCQkJIAkgICAgCQogCQkgIAkgICAgCSAgCQkgCiAg CQkgCQkJCSAJICAgIAkKICAJICAgIAkgCSAJCQkJIAoJIAkgIAkJIAkJCSAJCQkJCiAgIAkgCQkg IAkgICAgICAKIAkgCQkgIAkgICAgIAkgCQogICAJIAkJICAgCQkJCSAJCiAgIAkgCQkgIAkgICAg ICAKICAgIAkgCQkgICAJCSAJCQogCQkgCQkJCSAJICAJICAgCiAgCQkgCQkJCSAJICAgIAkKCQkg CQkJCSAJICAJIAkJIAoJCSAJICAJCSAJCQkgCSAgCgkJIAkJCQkgCSAgCQkgIAkiTi8yZmI6Yw== , и " (lines of space characters) "N/2fb:c must all be the correct version; that's 18 chars. The two quotes for the strings must also align, that makes two more powers of two.

Для любого из 'D"ear Komputer, please stop giving me shift!"el4'Ct , if it is converted to the capital version, we convert it to lowercase and it works properly.

К сожалению, я не могу использовать изящные возможности Python. "' , because that takes one more character.

 

Sat4atua


Рег
05 Jul, 2016

Тем
68

Постов
178

Баллов
578
  • 26, Oct 2024
  • #7

VisualBasic.net 2^-18

Критические символы: .("DearC"+",!".())

'"

Протестировано в LINQPad, язык = «Программа VB».

 

Артём Татевосов


Рег
07 Dec, 2020

Тем
87

Постов
217

Баллов
692
  • 26, Oct 2024
  • #8

Пиф, 2**-15

""

Кажется, я не могу найти версию Пита '' , so I'll borrow from Python. The characters that can't be swapped are ((,)).(!); , strtolower , and ucwords , всего 14 символов. Кавычки после strtolower must match, adding another power of 2.

 

Brizzer


Рег
16 Jun, 2009

Тем
63

Постов
193

Баллов
558
  • 26, Oct 2024
  • #10

СиДжем, 2-13 шанс

Согласно обновленной строке (696 байты).

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

Только $ # 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! $ are at risk right now.

Попробуйте онлайн здесь а поскольку этот текстовый редактор съедает все пространство, вот суть с правильным кодом.

 

Viktor901


Рег
05 Mar, 2019

Тем
73

Постов
173

Баллов
538
  • 26, Oct 2024
  • #11

ВБ.NET, 2^-12 2^-11

2-12

osascript

2-11

text ||answer||

Я обдумал свой ответ, прежде чем перейти к правилу «50 символов, включая только Enter, Tab и пробел». Так что мой недействителен.

Кажется, ключевым моментом здесь является наличие языков программирования, нечувствительных к регистру. В качестве альтернативы, если бы вы могли использовать стандартную QWERTY-клавиатуру Real (включая Caps Lock, другие клавиши Shift, Backspace и точку цифровой клавиатуры), было бы только 2 необходимых 50% шанса, что привело бы только к 2 дополнительным нажатиям клавиш за сбой. Мой неверный ответ для консольного приложения C#, указывающий на фактическое нажатие клавиш:

system info

76 минимальных жимов и только 2 необходимых 50% шанса

 

DrewKa


Рег
10 Nov, 2005

Тем
84

Постов
206

Баллов
636
  • 26, Oct 2024
  • #12

Эксель, 2-11

repeat with q in system info

Случай n and n не имеет значения. n automatically inserts required string id <n> Ввод формулы, начинающейся с 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 , myFunc , MyFuNc , myfunc , MYFUNC , myFunc .

 

Rokivit


Рег
06 Apr, 2011

Тем
67

Постов
176

Баллов
541
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно