使用零星的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,,TabSpace,它们是相同的。

如果您使用错误的键盘键入了一个N字符序列,则可能会输出2 N-(空格字符计数)方式。例如,键入A Space m可能会产生 a mor A ma Mor A M

编写一个程序,将这些字符并查看其所有2 N-(空格字符计数)可能的移位组合。输出Dear Computer, please stop giving me shift!的组合越多越好。您的分数是有效组合(有效程序)的数量除以组合总数。最高分获胜。

笔记

  • 对于有效的程序,Dear Computer, please stop giving me shift!唯一的副作用是精确打印而不要进行其他任何输出。
  • 有效的程序不应接受输入。
  • 无效的程序可以做任何事情。
  • 评论可以在任何地方使用。
  • 空格答案无法获胜,因为获得100%的分数(相对)是微不足道的。您仍然可以提交Whitespace解决方案以获取乐趣。
  • 您的程序最多不能超过1024个字符。

更新:更改Stop giving me shift!Dear Computer, please stop giving me shift!允许更复杂的答案。如果需要,现有答案可能会保持原样。


2
+1,这是一个很大的挑战,但我希望您能给我们更长的输出字符串。我想到了几个巧妙的技巧,但是在我所知道的所有语言中,所有这些技巧都需要超过18个字符。
纳撒尼尔(Nathaniel)2014年

2
@ Calvin'sHobbies但是...当前答案如何?
约翰·德沃夏克

1
@ Calvin'sHobbies不是!1024限制也很好地防止了这种情况。考虑到所有这些,我投票支持关闭,直到不清楚您要问什么。请不要更改规格赋予不利大部分的答案
优化

1
@ Calvin'sHobbies太可惜了,这个字符限制为1024个字符。我需要重新考虑我的答案...
Justin

1
@Optimizer至少他们不会赢。
jimmy23013

Answers:


46

Applescript,2 0(100%)

我相信我可以在这里取得满分:

  • Applescript编辑器(我的IDE)在编译/运行时自动将所有关键字转换为小写
  • 此外,定义的变量和处理程序名称不区分大小写-例如,如果一个处理程序myFunc被定义,则IDE将自动转换MYFUNCmyfuncMyFuNc等的引用到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编辑器也可以正常工作:

$ # 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。介意解释一下代码吗?
卡尔文的爱好2014年

2
@ Calvin'sHobbies Applescript应该是可读性最高的语言之一-您真的不明白吗?;-)我会尝试添加一点解释...
Digital Trauma 2014年

2
请张贴高尔夫球版,没有缩进,也没有名字end name。照原样,我必须使用sed -e 's/^ *//' -e 's/^end.*/end/' dearcase.scpt | wc -c它来计数。另外,您可以将更count of a改为count a,然后log从删除,从1044降至1037 log f as text。我使用旧的OS X 10.4系统进行测试,其中log命令的结果为空;osascript仅输出结果,而不显示事件日志,因此除非删除,否则我没有输出log
kernigh 2014年

3
将c更改为呼叫j两次(而不是3次),并根据需要更新呼叫站点可以节省7个字符,并使您处于限制之下。
paradigmsort

3
# Interpret all upper case: $ tr A-Z a-z-args向后,对吗?
Izkata 2014年

16

PHP,2 ^ -12

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

PHP是PHP,资本化echoucwords以及strtolower并不重要。调用ucwordsstrtolower确保字符串的大小写不会更改输出。

因此,唯一不能更改的((,)).(!);字符是(10个字符)。

每对引号也具有作为有效50%的机会(''""是有效的,但'""'没有),因此各加入两另一功率。


2
@ edc65 ucwords将每个单词的首字母大写
es1024 2014年

1
一个好的IDE将添加正确的收盘报价为你(你永远只落得''或者"",以及右括号,所以虽然你仍然有50%的机会(时,)应该是自动的。
WOUNDEDStevenJones

拍摄时,您不能使用任何类型的导航键(箭头),因此,即使您的IDE能够正确自动完成,您也需要再次键入相同的字符,否则它将插入新的(错误的)字符,如下所示:strtolower("Dear Computer, '"0)...
受伤的史蒂文·琼斯2014年

1
@WOUNDEDStevenJones我相信依赖IDE的功能将被视为作弊。
IngoBürk2014年

1
怎么样<?在程序的开始?
Michael Mior 2014年

5

注意:这实际上是3个答案之一。当它们彼此如此直译时,我看不出将其分成多个答案的意义。如果他们应该分开,请告诉我,我会解决。

重新阅读规格后,我意识到这实际上是无效的。每个答案的长度均大于4000个字符。但是由于方法不同,我还是会把它留在这里。

Python 2、2 **-41

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

只是提供不同风格的解决方案。它在制表符中对每个字符的ascii值进行编码,并以空格分隔。制表符的数量是ascii值的数量。

这是相同的解决方案

Pyth,2 **-11

j""mCldc"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               "d

另一个相同的解决方案-除了用换行符替换空格外

Golfscript,2 **-8

'                                                                                                                                                                                                                                                                               









































                                                                                                                                    'n/{,}%+

也许二进制编码适用于GolfScript。TAB为1,SPACE为0,反之亦然。
贾斯汀

3
我不是唯一将大多数GolfScript答案视为空白的人,对吗?
法拉普2014年

1
@Pharap这就是窍门。这是一堆用换行符分隔的选项卡。如果一直向下滚动并向右滚动,您将看到字符串的结束位置,并进行了魔术操作将其转换为ascii。
贾斯汀


4

空格(645个字节,概率为2 ^ 0)

由于该程序使用制表符,空格和换行符(它们均不受移位的影响),因此它的成功率为100%。

             





















































































  

程序运行


1
但是请注意,按照规则,这是非竞争性的。
IngoBürk2014年

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==

基于Optimizer和Quincunx的答案的想法。


3

Python 2,2 -20几率

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

printS+!,并且.lower()必须是正确的版本; 那是18个字符。字符串的两个引号也必须对齐,这使得两个具有两个以上的幂。

对于任何top giving me shift,如果将其转换为大写版本,我们都会将其转换为小写字母,并且可以正常使用。

可悲的是,我不能使用Python的nifty capitalize(),因为那需要再增加一个字符。


如果有帮助,该短语现在会更长(但通常不会大写)。
卡尔文的爱好2014年

@ 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会自动为您校正外壳。
法拉普2014年

@Pharap但套管外的报价是没有问题的...... VS不正确的一个“(”转移到“9”
edc65

1
在这种情况下,更有用的东西:你可以摆脱获取的潜在情况的>,而不是.通过改变Console.Write(string)Write(string)和交换(string).ToLower()出去LCase(string)
法拉普2014年

1

Pyth,2 **-15

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

我似乎找不到Pyth的版本lower(),因此我将从Python借用。其不能被换的字符+"S"$!.lower(),用于总共14个字符。$必须匹配的引号,再加上2的幂。


Pyth没有lower()-没有足够的使用。我也许应该补充回。
isaacg

1

兰特2 -21

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

一系列元模式和caps调用会强制进行正确的格式化。函数名称和参数不区分大小写。

在线版


1

CJam,2 -13机会

按照更新的字符串(696字节)。

"   




















































































             "N/:,2/Kfb:c

""N/:,2/Kfb:c现在只有危险。

在这里在线尝试,由于该文本编辑器正在占用所有空间,因此这里是具有正确代码的要点


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),则只有2个必要的50%机会,每次失败只会导致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)

76次最低印刷机,只有2次必要的50%机会


0

Excel,2 -11

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

案例PROPERLOWER没有关系。输入以+自动插入开头的公式=。因此,只有(",)&!可以打破。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.