选择您最喜欢的著名计算机科学家或计算机科学先驱,他们出生于1942年或更早(1943年标志着“第一台”计算机的诞生)。他们应该有一个Wikipedia页面或其他网站,其中列出了他们的出生年份,并说明他们的成就与计算机科学的关系。您可以选择与其他人相同的东西,但鼓励选择新的人。
取一个他们众所周知的名字。这很可能是他们的名字和姓氏,但如果更常见,则可能包含缩写或中间名。例如,对于托尼·霍尔都Tony Hoare
和C. A. R. Hoare
是可以接受的。
名称中的所有字符必须是可打印的ASCII。如果名称包含无法打印的ASCII字符,则选择近似值即可。例如Kurt Godel
代替Kurt Gödel
。
以名称中的唯一字符集(例如C. ARHoare
)为例,并在科学家的出生年份之前将其向上移动到可打印的ASCII刻度,从一个~
到另一个循环。(基本上以95为模添加出生年份。)这将为您(最可能)提供一组新的可打印ASCII字符。
例如,CAR Hoare于1934年出生,因此将每个字符都C. ARHoare
移入1934年(34个mod 95)字符可得出ePBctj2$5(
。
该堆栈片段将为您完成所有转移:
function go() {var name = document.getElementById("name").value;var year = parseInt(document.getElementById("year").value);var unique = {};for (var i = 0; i < name.length; i++) { unique[name.charAt(i)] = true; } var result = ''; for (var char in unique) { result += String.fromCharCode((char.charCodeAt(0) - 32 + year) % 95 + 32); } document.getElementById("result").value = result; }
Name: <input type="text" id="name" value="C. A. R. Hoare"><br>
Birth Year: <input type="text" id="year" value="1934"><br>
<button type="button" onclick="go()">Ok</button><br>
Result: <input type="text" id="result" readonly>
挑战
使用此集合以及仅此集合(没有制表符,没有换行符)的可移位可打印ASCII字符,编写一个打印Hello, [name]!
到stdout或最接近的替代字体的程序,其中[name]
的名称与您在上面选择的名称相同,并被移位以获取程序字符。您可以使用集合中的多个字符,也可以完全不使用某些字符。例如,理论程序PetBee($25
打印Hello, C. A. R. Hoare!
。
计分
分数是代码大小(以字节为单位)乘以所选名称中唯一字符的数量。最低的痛处获胜。
Rear Admiral Grace Murray Hopper, United States Navy, (Retired), Doctor of Philosophy
。生于1906年。可以吗?
Rear Admiral Grace Murray Hopper
。请记住,您的代码大小乘以名称中唯一字符的数量,因此较长的名称不一定更好。