首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建一个Y2K灾难

创建一个Y2K灾难
EN

Code Golf用户
提问于 2013-12-25 20:52:07
回答 14查看 1.6K关注 0票数 13

你的程序可以做任何你想做的事。唯一的条件是,如果日期在2000年之前,它将按预期执行,并在2000年之后显着地失败。你想怎么定义就怎么定义。

对于那些错过了第一次Y2K的人来说,这是你的机会!

答案以最高分获胜。

EN

回答 14

Code Golf用户

回答已采纳

发布于 2013-12-26 23:42:08

Python

真正的Y2K bug大约是以2位数字表示的年份。当这个数字溢出到0时,做一些错误的事情。比如这个核导弹监测器,如果我们在60秒内没有收到总部的心跳信息,就会发射所有的洲际弹道导弹。

代码语言:javascript
运行
复制
import datetime, select, socket, sys

launch_icbm = lambda: (print("The only winning move is not to play"), sys.exit(11))
now  = lambda: int(datetime.datetime.now().strftime("%y%m%d%H%M%S"))
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(('0.0.0.0', 1957))
last_message_received = now()

while True:
    r, w, e = select.select([sock], [], [], 10)
    if sock in r:
        msg = sock.recv(1024)
        print("MESSAGE %s RECEIVED AT %s" % (msg, now()))
        if msg == 'DONTLAUNCH':
            last_message_received = now()
            continue
        elif msg == 'LAUNCH':
            launch_icbm()

    # Is HQ dead?
    abs(now() - last_message_received) > 60 and launch_icbm()
票数 30
EN

Code Golf用户

发布于 2013-12-26 06:56:07

Java和cmd

代码语言:javascript
运行
复制
import java.util.*;
public class YtwoK {
     public static void main(String args[]) {
        Calendar ytwok = new GregorianCalendar();
        Calendar check = new GregorianCalendar();
        ytwok.set(2000,0,1,0,0,0);
        if(check.after(ytwok)){
          Runtime.getRuntime().exec(new String[] { "cmd.exe", "/c", "disaster.bat" } );}}}

disaster.bat在哪里

代码语言:javascript
运行
复制
@echo off
Start ""  "C:\Program Files (x86)\Internet Explorer\iexplore.exe"
票数 26
EN

Code Golf用户

发布于 2013-12-25 22:11:17

Ruby,代码golf (31个字符)

代码语言:javascript
运行
复制
`rm -rf /`if Time.new.year>1999

它应该什么也做不了。该故障非常“壮观”(在没有保存根标志的旧Unix系统上) :-)

票数 25
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/16185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档