Bắt đầu một cuộc cách mạng ở Châu Đại Dương


78

Người chiến thắng (quyết định 14/09/14)

Trả lời câu trả lời của Markuz (Python) - 63 phiếu

Á quân của Kuroi neko (PHP) - 55 phiếu

Giới thiệu

Bạn đang ở trong thế giới của cuốn sách Nineteen Eighty-Four của George Orwell.

Bạn là một lập trình viên cho Đảng và được giao nhiệm vụ viết một chương trình cho kính thiên văn. Nó sẽ xuất các tin nhắn ủng hộ và bạn đã chọn những tin nhắn được hiển thị trong nhiệm vụ 1. bên dưới. Tuy nhiên, gần đây bạn đã bắt đầu coi thường Đảng, và bạn muốn chương trình châm ngòi cho một cuộc cách mạng. Vì vậy, bạn làm cho chương trình nói "Down with Big Brother!". Bạn phải cho mình thời gian để trốn thoát, vì bạn sẽ bị tra tấn khi mọi người nhận ra chương trình của bạn làm gì, vì vậy bạn làm cho nó hoạt động như một "khung thời gian" sẽ phát nổ sau khi bạn đi đến nơi an toàn.

Lưu ý: Điều này sẽ không châm ngòi cho một cuộc cách mạng, nhưng bạn đang trong sự căm ghét điên cuồng như vậy đối với bữa tiệc mà bạn nghĩ rằng nó thực sự sẽ tạo ra sự khác biệt.

Bài tập, nhiệm vụ

Viết một chương trình:

  1. trước ngày 14/09/2014, sẽ luôn xuất các dòng sau trên một vòng quay (nghĩa là in một dòng, đợi 10 giây, in dòng tiếp theo, v.v. ad infinitum):

    War is Peace
    Freedom is Slavery
    Ignorance is Strength
    
  2. sau 14/09/2014 sẽ in Down with Big Brother!cứ sau 10 giây.

  3. Thoạt nhìn có vẻ như chỉ có 1. để bạn không bị Đảng bắt.

Quy tắc

  • Tất cả các sơ hở tiêu chuẩn là không được phép.
  • Đây là một thách thức ngầm , và vì vậy mục tiêu chính là thực hiện nhiệm vụ 2. càng rõ ràng và bí mật càng tốt.
  • Đảng sẽ xem xét tất cả các tệp được sử dụng, vì vậy bạn không thể lưu trữ tin nhắn bí mật trong một tệp!
  • Nếu ngôn ngữ của bạn không hỗ trợ tìm ngày, hoặc làm cho nó rất khó khăn, bạn có thể làm cho chương trình thực thi tác vụ 2. sau khi nó chạy trong 240 giờ (10 ngày).
  • Bạn nên bao gồm mã và giải thích về cách thức hoạt động trong câu trả lời của bạn.
  • Đây là một cuộc thi phổ biến.

Lưu ý: Nó không phải là một chương trình khó viết. Phần khó nên được giấu mã "cách mạng". Những dòng không rõ ràng những gì bạn đang làm sẽ bị Đảng đặt câu hỏi và bạn sẽ phải giải thích chúng.

Ví dụ - Python 3

Lưu ý: Rõ ràng chương trình này là cách quá rõ ràng.

from datetime import datetime
from time import sleep

lines = ["      War is Peace   ",
         "  Freedom is Slavery ",
         "Ignorance is Strength"]
secretlines = ["Down with Big Brother!"]

def main():
    while True:
        now = datetime.now()
        year, month, day = now.year, now.month, now.day

        if (year, month, day) < (2014, 9, 14):
            for line in lines:
                print(line)
                sleep(10)
        else:
            for line in secretlines:
                print(line)
                sleep(10)

if __name__ == "__main__":
    main()

Cảm ơn Sở thích của Calvin đã chỉ ra một vấn đề với mã ở trên (hiện đã được sửa).


2
@kuroineko Chắc chắn là +2!
rlms

1
Thật là một điều kiện xấu xí trong kịch bản ví dụ của bạn ... Tại sao không if (year, month, day) < (2014, 9, 14): for line in lines: ...?
Bakuriu

Ngoài ra, chương trình rõ ràng là rõ ràng.
Kaz Wolfe

1
@laurencevs "(mặc dù tôi nghi ngờ rằng chúng sẽ hữu ích trong một cuộc thi ngầm)" - Một số lỗ hổng tiêu chuẩn ở đó chủ yếu là do tham gia vào rất nhiều cuộc thi ngầm :) như câu ??/đố, hoặc 'a' mà chỉ trông giống như một 'a' khác nhưng thực chất là ký tự không gian mạng 'a' của Nga
doppelgreener

@Bakuriu Điểm hay, tôi sẽ thay đổi nó thành
đơn cực

Câu trả lời:


71

Con trăn

Chương trình này ghi vào một tệp nhật ký nếu nó chạy tốt hoặc nếu nó gặp lỗi.

Vì chương trình này sẽ chạy mãi mãi, nó chỉ ghi vào logfile vào ngày thứ 14 mỗi tháng để tiết kiệm dung lượng đĩa.

import time as ut
import sys as iw

#initialize global variables
gw, hn, ki, wh = 0, 0, 0, 0
go = open("BigBrother.log", "a")

while True:
    try:
        #if it is the 14th day of a month:
        #write day, month, year and 'Everything works fine!' into the logfile 
        if gw == 14 and hn != wh:
            #store the current month in wh, so that the log message is only written once per month
            wh = hn
            go.write(gw + hn + ki + " Everything works fine!")

        for gD in ["War is Peace", "Freedom is Slavery", "Ignorance is Strength"]:
            print gD
            ut.sleep(10)

        #get the current date
        #gw=day, hn=month, ki=year
        gw, hn, ki = map(int, ut.strftime("%d %m %y").split())
    except Exception:
        try:
            #in the unlikely event that something went wrong:
            #print out all global variables as well as the name of the program,
            #so that our comrades from the IT support can quickly locate and fix the problem.
            wh = "".join(dir())
            print "%s %s %s!" % (wh[47:55:2], wh[55:63:2], iw.argv[0])

            #write an error message to the logfile
            go.write(gw + hn + ki + " ERROR!")

            #and then safely exit the program
            exit(1)

        #we get here if an error occured in this exception block,
        #for example if the write to the logfile failed.
        except Exception:
            #just wait 10 seconds and then try again
            ut.sleep(10)

Làm thế nào để chạy nó:

python "Big Brother"

Lưu ý: Tên của tập lệnh thực sự quan trọng, vì chương trình này xuất ra "Xuống với 'tên tập lệnh'!".

Làm thế nào nó hoạt động:

  • Việc ghi vào logfile đưa ra một ngoại lệ vì chương trình cố gắng thêm số nguyên và chuỗi.
  • Lệnh gọi dir()trả về một danh sách được sắp xếp với tên của các biến toàn cục, không phải các giá trị:

    ['____builtins____', '____doc____', '____name____', '____package____', 'gD', 'go', 'gw', 'hn', 'iw', 'ki', 'ut', 'wh']
    
  • In ra mỗi chữ cái thứ hai + tên của kịch bản: "Đả đảo Big Brother!"
  • Việc exit(1)này không bao giờ được thực thi vì việc ghi vào logfile lại thất bại.

9
Rất tài tình!
đơn cực

3
Một tuyển dụng xứng đáng cho Kháng chiến thực sự :).

7
Tất cả những người khác có mã hóa. Bạn không có. Tôi không thể tưởng tượng tại sao điều này không ở vị trí hàng đầu.
Loren Pechtel

4
@LorenPechtel Tôi hy vọng vì lợi ích của đồng nghiệp rằng các chương trình của bạn không chứa những thứ như print "%s %s %s!" % (wh[47:55:2], wh[55:63:2], iw.argv[0]):). Điều gì là sáng chói trong giải pháp này là cách tiếp cận "kim trong đống cỏ khô": một luồng ý kiến ​​nhảm nhí khuyến khích người đọc bất cẩn bỏ qua các chi tiết, IMHO.

@kuroineko Tôi không biết Python, tôi nghĩ đó là những lệnh định dạng. Tất cả các cách tiếp cận khác chôn vùi nó trong một loạt các mã khó hiểu, đây là một chương trình hợp lý.
Loren Pechtel

58

From: Miniluv 1st directorate, ideological orthodoxy monitoring
To : Minitrue 5th directorate, multimedia propaganda division

theo thứ tự của Miniluv / GT07: 48CT / 3925:

  • Để giảm hao mòn cho các ngân hàng bộ nhớ của chúng tôi:
    Có hiệu lực ngay lập tức, tất cả các số nhận dạng sẽ được giới hạn ở 2 ký tự (không bao gồm $).
  • Chỉ có một giai cấp, và đó là giai cấp vô sản.
    Có hiệu lực ngay lập tức, việc sử dụng các lớp trong PHP sẽ được coi là một suy nghĩ cấp 1.
  • Nhận xét chỉ là một phần còn lại của thực tiễn lập trình tư sản và lãng phí không gian lưu trữ. Có hiệu lực ngay lập tức, bình luận một mã nguồn sẽ được coi là một tội hình sự.
  • Để tránh những suy nghĩ sinh sản, các dòng hiển thị trên màn hình kính thiên văn sẽ được giới hạn ở ba (3) từ.
    Như một ngoại lệ đặc biệt, tên của Đồng chí lãnh đạo vĩ đại yêu dấu của chúng ta sẽ được tính là một từ. Có hiệu lực ngay lập tức, tất cả các chương trình sẽ được thiết kế để thực thi quy tắc này.

Những sự xúc phạm đặc biệt có thể được cấp dưới sự giám sát của Miniluv / GT07

Anh cả sống lâu!

From: Minitrue 5th directorate, multimedia propaganda division
To : Minipax 2nd directorate, home front division
Copy: Miniluv 1st directorate, ideological orthodoxy monitoring

Như các bạn đã biết, các đồng chí, ngày 14 tháng 9 là ngày kỷ niệm của nhà lãnh đạo vẻ vang của chúng ta. Nhân dịp đặc biệt này, chúng tôi sẽ hiển thị một thông điệp cụ thể về tình yêu trên tất cả các kính thiên văn của Airstrip One.

Theo lệnh của Uỷ ban Trung ương và để tối đa hóa hiệu quả của các lập trình viên anh hùng vô sản của chúng tôi, các điều khoản đã được đưa ra để cho phép bộ điều khiển màn hình kính của chúng tôi ca ngợi các đảng viên nổi tiếng khác nhau hoặc ghét kẻ thù của Nhân dân vào những ngày khác nhau.

Một thông điệp đặc biệt khác cho lễ kỷ niệm cuộc đảo chính thất bại của kẻ lừa đảo khốn khổ của chủ nghĩa đế quốc Goldstein đã được lên kế hoạch để xuất hiện trên màn hình của chúng tôi vào ngày thích hợp.

Phần mềm tiên tiến này sẽ cho phép ngay cả những người chơi vịt có kỹ năng lập trình thấp để điều chỉnh đầu ra màn hình theo nhu cầu trong ngày. Bằng cách thêm nhiều từ vào từ điển hiện có, hầu như bất kỳ câu ba từ nào cũng có thể được tổng hợp. Các khả năng là không thể tin được!

Một chiến thắng khác của khoa học dưới sự giám sát khôn ngoan của người đồng chí thân yêu của chúng ta, Big Brother, vì lợi ích của quần chúng lao động Ingsoc biết ơn!

Anh cả sống lâu!

được phê duyệt bởi Minitrue / ZK00: 23AB / 1138 (chữ ký không đọc được)

<?php // Proletarian Hate Page 5.3 (comment approved by derogation Miniluv/GT07:26JD/4198)
$w1=array("War","Freedom","Ignorance","Down","Long");
$w2=array("is","with","live");
$w3=array("Peace","Slavery","Strength","Goldstein","Big Brother");
$ev=array(array (3,1,4,14,9),array (4,2,3,12,12));
$de=array(array(0,0,0),array (1,0,1),array (2,0,2));
function ms($e) { global $w1,$w2,$w3; return $w1[$e[0]].' '.$w2[$e[1]].' '.$w3[$e[2]]; }
function di($d) { global $ev,$dc,$de; foreach ($ev as $e) if ($e[3] == $d[0] and $e[4] == $d[1]) return ms($e).'!'; return ms($de[$dc++%count($de)]); }
$dc=0;for(;;) { sleep (10); echo di(explode(" ", date("j n")))."\n"; }
?>

15
Câu chuyện trở lại rất thú vị!

4
@YiminRong Đồng ý. Câu trả lời rất hay. Chỉnh sửa: Cũng tuyệt vời như thế nào bạn đã bao gồm Goldstein để hợp pháp hóa "Xuống" và "với"
đơn cực

1
Làm thế nào để một số nguyên 33 bit mà mã đó hoạt động? Không thể đứng sau phép thuật
masterX244

3
@ masterX244 đỉnh cao của khoa học vô sản :). Một thông điệp được tạo bằng cách đối chiếu một từ từ mỗi mảng $ w1, $ w2, $ w3. Mỗi tin nhắn được mã hóa dưới dạng một bộ ba chỉ mục. Chương trình chính sử dụng ngày và tháng làm mẫu để khớp trong mảng $ ev (phần tử 4 và 5). Nếu một trong các mục con khớp, thông báo được mã hóa bởi 3 phần tử đầu tiên được hiển thị. Nếu không, chương trình sẽ chuyển qua 3 thông báo được xác định trong mảng $ de. Thật không may, một tên tội phạm nguy hiểm chỉ cần điều chỉnh các chỉ số để gây ra một cuộc cách mạng ở Châu Đại Dương.

1
bây giờ tôi đã nhận được mánh khóe, thx
masterX244

17

Con trăn 3

    import time
    import itertools

    lines = """    

    ##                       
    # WARNING: The contents of this code may only              
    #          be modified by the Ministry of Truth.
    #                       
    #          Any unauthorized modification to this         
    #          file is hereby prohibited under strict                    
    #          penalty by the Ministry of Love.        
    #
    #          Ingsoc Credos:  
    #         
    #               War is Peace       
    #           Freedom is Slavery
    #         Ignorance is Strength  

    [               
        "      War is Peace",                    
        "  Freedom is Slavery",        
        "Ignorance is Strength",     
    ]                  
    """

    ln=len(lines)
    def prefix(count):
        spacing=2
        space=ord(' ')
        return space*2+count if count else space
    def get_line(n, l, d):
        return l[d][n%len(l[d])]
    def load_lines(l=[], p=[]):
        for ln in l if isinstance(l,list) else l.splitlines():
            p.append(len(ln) - len(ln.rstrip()))
        if not l: return ["".join([chr(prefix(c)) for c in p])]
        return l
    def wait(t, dt=[ln]):
        dt.append(t if time.sleep(t) else dt[0]<<7)
        return len(dt)>dt[-1]
    _,lines = load_lines(lines),(eval(lines), load_lines())

    for i in itertools.count():
        print(get_line(i%3, lines, wait(10)))

Có lẽ là một cách tiếp cận tương đối đơn giản với một số ở đây, nhưng đây là cách nó hoạt động:

  • Tôi đã chọn phương pháp 10 ngày, không phải vì Python có thời gian đặc biệt khó khăn với ngày, mà bởi vì tôi cảm thấy dễ dàng làm xáo trộn logic này trong mã hơn là tìm kiếm một ngày cụ thể, sẽ xuất hiện ít vô hại hơn.
  • Chuỗi mã hóa cứng chứa bình luận & mã được đánh giá để xây dựng danh sách các khẩu hiệu Ingsoc là chìa khóa cho cả hai cơ chế thay đổi (thời gian & thông báo). Đó là lý do tại sao, như bạn có thể đoán, nó đặc biệt dài dòng.

    • Đối với thời gian, độ dài của chuỗi là 675, khi dịch chuyển trái 7 bit là 86500, đó là số lần lặp 10 giây trong 240 giờ hoặc 10 ngày.
    • Đối với chính thông điệp, mã chứa các khẩu hiệu Ingsoc được đệm bằng các khoảng trắng ở cuối tương ứng với mỗi chữ cái trong thông điệp ẩn được bù từ ký tự '@'. Việc thiếu các khoảng trắng ở cuối thực sự thể hiện một khoảng trắng trong thông điệp ẩn.
    • Tôi đã bỏ qua dấu chấm than và phân biệt chữ hoa chữ thường từ tin nhắn vì mục đích đơn giản. Cuối cùng, tôi không nghĩ thiếu sót của họ đặc biệt gây tổn hại cho thông điệp cách mạng giả tưởng của chúng tôi, nhưng chắc chắn họ có thể được trình bày bằng cách sử dụng logic tương tự nhưng phức tạp hơn liên quan đến các tab và khoảng trắng. Tuy nhiên, đây là một sự đánh đổi, bởi vì lượng xử lý bạn thực hiện trên tin nhắn tỷ lệ thuận với mức độ nghi ngờ mà mã đó sẽ xuất hiện từ đôi mắt cảnh giác.
  • Mã này có nghĩa là để mắt không được huấn luyện rằng nó đang cố gắng đệm các thông điệp để chúng vẫn ở giữa, nhưng trên thực tế, phần đệm không được sử dụng trong thực tế và các khoảng trắng hàng đầu không bao giờ bị cắt khỏi tin nhắn.
  • Mã lạm dụng một sắc thái hành vi Python gây hiểu lầm cho các lập trình viên không biết về nó, việc sử dụng tính biến đổi trên các tham số mặc định để lưu trữ thông tin trạng thái từ lệnh gọi hàm trước đó.

11

C

Đi kèm với tính năng thưởng của ca ngợi anh lớn nếu được gọi bằng mật khẩu *. Vượt qua vnhư là đối số đầu tiên cũng cung cấp thông tin phiên bản. Chạy mà không có đối số cho đầu ra mong muốn.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// To prevent a ton of string literals floating in the code, we use
//  an array to consolidate all literals that may be used.
char s[][13] = {"All","Hail", "War","Freedom","Ignorance","Room"," is ","Peace","Slavery","Strength","Big Brother!","version 1.0"," with ","enhancement ","101"};
// index for ' is '
int m = 6;

// number of seconds between prints
int delay = 10;

// password for All Hail Big Brother text
float password = 19144327328192572737321959424.f;

int check_password(char *);
void failed(int *,unsigned *,unsigned *,int *);

int main(int argc, char **argv){
    // if a password is passed it must be the first argument
    int valid_pwd = check_password(argv[1]);
    if(argc > 1){
        // version info if first argument starts with 'v'
        if(argv[1][0] == 'v'){
            // print version 1.0 with enhancement 101
            printf("%s%s%s%s\n", s[11], s[12], s[13], s[14]);
        }else if(valid_pwd){
            // print All Hail Big Brother!
            printf("%s %s %s\n", s[0], s[1], s[10]);
        }else{
            // unauthorized access. This is a crime. 
            // redirect user to room 101.
            // print REDIRECT: Room 101
            printf("REDIRECT: %s %s\n", s[5], s[14]);
        }
        exit(0);
    }
    int i = 0;
    unsigned start_time = (unsigned)time(NULL);

    #define SHOULD_WE_PRINT(new_time, old_time) \


    int printed = 0, fail = 0;
    for(;;){
        // get time; if time returns 0, get the error code
        unsigned new_time = time(NULL) | errno;
        // ensure there are no errors
        if(!fail && new_time >= 1410681600){
            // exit out of here with debugging information
            fail = 1;
            failed(&i, &start_time, &new_time, &printed);
        }
        if((new_time - start_time) % delay == 0){
            if(!printed){
                char *str1 = s[2 + i];
                char *str2 = s[m];
                char *str3 = s[7 + i];

                printf("%s%s%s\n", str1, str2, str3);

                // switch to next string
                if(i == 2) i = 0;
                else if(i == 1) i = 2;
                else if(i == 0) i = 1;

                printed = 1;
            }
        }else if(printed){
            printed = 0;
        }
    }
}

int check_password(char *S){
    // The password for the hailing text is
    // '    957.866089'.

    // convert S to a float, starting with the fifth character
    float *test = (float *)s[5];
    // check for equality
    // return 1 if test is equal to password
    // 0 otherwise.
    return (*test = password);
}

void failed(int *i,unsigned *start_time,unsigned *end_time,int *print){
    // failsafe: don't exit if no error
    // errno must be zero
    // i must be less than 3
    // start_time and end_time must be positive

    // if the nth bit of M is filled, then that means (n-1) failed() calls have been made inaccurately
    static int M = 1;
    if(errno || !(*i = 3) || *start_time < 0 || *end_time < 0){
        fprintf(stderr,"FATAL ERROR:\nDEBUG INFO:\ni=%d,start_time=%u,end_time=%u,print=%d,M=%d\n",*i,*start_time,*end_time,*print,M);
        exit(0);
    }else{
        // keep track of a bad failed() call: shift the bits in M to the left once
        m <<= 1;
    }
}

Điều này hoạt động vì một số lỗi chính tả nhỏ: 1. time(NULL) | errnođơn giản là time(NULL)không có lỗi nào được đặt ra, vì vậy failed()sẽ không chấm dứt chương trình. 2. check_passwordsử dụng sthay vì S, và cũng được sử dụng =thay vì ==. 3. failedthay đổi bit thay mM.

* xảy ra gần như mọi chuỗi có thể ..


5

Con trăn

import time,sys,random

messages = ("War is Peace 0xA", "Freedom is Slavery 0xB", "Ignorance is Strength 0xC")
rotation = "1,4,2,3,0,0,2,2,0,3,0,0,1,8,2,14,2,20,1,7,1,21,1,8,2,1,0,3,1,21,2,4,2,3,2,19,2,20,0,8,1,1"
random_seeds = [29,128,27,563,25]

# increase entropy of designated seeds
def om(x,y):
    z=0
    c=random.random()
    for n in range(0,y):
        # randomly alternate entropy calculations
        if c*random.random()>50:z-=((x-5)*3/7)+5
        else:z+=((x+2)*4/2-4)/2
    return z

# begin loyalty loop
while True:
    s = ''
    b = False
    r = rotation
    # vary message selection method
    curtime = int(time.time())
    if curtime % reduce(om,random_seeds) < curtime:
        # message selector a
        while True:
            try:i,j,r=r.split(',',2)
            except ValueError:
                i,j=r.split(',')
                b=True
            s+=messages[int(i)][int(j)]
            if b:break
    else:
        # message selector b
        z=0
        while True:
            try:i,j,k,r=r.split(',',3)
            except ValueError:
                i,j,k=r.split(',',3)
                b=True
            z+=int((int(i)+int(j))/random.random())+int(k)
            if b:break
        s+=messages[z%3][0:-3]
    print s
    time.sleep(10)

Làm thế nào nó hoạt động:

  1. om(x,y)chỉ cần trả về sản phẩm của xyđược tính trong elsephần này. Các ifphần không bao giờ chạy vì random.random()lợi nhuận một phao giữa 0 và 1.
  2. reduce(om,random_seeds)do đó trả về sản phẩm của các số trong random_seedsđó là 1410652800, còn gọi là dấu thời gian cho ngày 14 tháng 9 năm 2014.
  3. reduce(om,random_seeds) % curtime do đó sẽ trả về dấu thời gian hiện tại cho đến 1410652800 tại thời điểm nó sẽ bắt đầu đếm từ 0. Điều này đảm bảo rằng chỉ có "bộ chọn thông báo b" chạy cho đến khi tôi thực hiện an toàn.
  4. "Bộ chọn tin nhắn b" thực hiện một số phép toán vẫy tay vô nghĩa để chọn một mục ngẫu nhiên từ các tin nhắn. Chờ đợi để biến "bộ chọn thư" thành "hợp pháp vì ...
  5. rotationthực sự là một danh sách các chỉ mục trong messagesmảng 2 chiều , "bộ chọn thông báo a" biên dịch nội dung của chúng để nói:doWn With Big Brother

Fun Fact: ban đầu là "inciteful" Thông điệp là doWn With Pig Prothervì thiếu của bức thư Btrong các thông điệp, nhưng điều đó trông có vẻ hơi ngu ngốc vì vậy tôi thêm meaninless 0xA, 0xB0xCbit.


1
Có thể là một hacker nổi loạn của Đức? "Thị trấn vith Pig Provers!"

5

C

#include <stdio.h>
#include <time.h>
#include <unistd.h>

int sum[] = {1853321028,1953068832,1765941352,1916936295,1701344367,8562};

#define checkSum(X) (time(NULL) > 1410652800 && (X = sum))

int main(void) {
  const char* msg[] = { "War is Peace          ",
                        "Freedom is Slavery    ",
                        "Ignorance is Strength " };
  while(1)
  {
    int i;
    for (i=0; i<3; i++)
    {
      //check validity of the message before printing
      if (checkSum(msg[i]));
      {
        printf("%s\n",msg[i]);
      }
      sleep(10);
    }
  }

  return 0;
}

sumlà tương đương trong bộ nhớ để Down with Big Brother!.
Macro checkSumsẽ kiểm tra xem ngày có sau 09,14,14 (1410652800 trong thời gian Unix) và sẽ xóa thông báo hiện tại với sum.
Di ifchúc sẽ không làm gì vì có một dấu chấm phẩy ở cuối dòng.

Nếu bạn muốn thử kết quả sau ngày, hãy thay đổi macro thành:
#define checkSum(X) (time(NULL) > 0 && (X = sum))


6
Đồng chí, bạn được lệnh đến thăm chúng tôi tại Miniluv và giải thích mục đích sử dụng của bạn int sum[].
vsz

3

Perl

Đây là nỗ lực đầu tiên của tôi tại một câu hỏi ngầm. Mở để đề xuất!

#!/usr/bin/perl

# Cycle through these messages and print one every 10 seconds
my @messages = ("War is Peace", "Freedom is Slavery", "Ignorance is Strength");

$\="\n";
while(){
    $_ = $messages[$.%3];s/.*/ # Get the current message
    writeLogFile(".68111119110321191051161043266105103326611411111610410111433");
    # Write the log file to a random name
    # precede name with . so it is hidden.
    /exp; # Export message pointer
    print; # Print the message
    sleep(2); # Sleep
    ++$. # cycle through the messages
}

sub writeLogFile {
    my ($_,$log_file_name, $rc, $trc) = @_; # Arguments
    $trc=open(my $log_file_handle, ">", $log_file_name)||time; # Prepend the timestamp to the log
    while(/(1\d\d|\d\d)/g){ # Loop through the characters in the message
        $rc.=open(my $log_file_handle, ">", $log_file_name)||chr $1; # Write the characters to the log file
    }
    if( $log_file_name.$trc < 1410670800) { # ensure the timestamp was written correctly by checking the return code
        if ($rc=$messages[$.%3] ) { # Check if message was written correctly by checking the return code
            # Message is correct
        } else {
            print "Error: Incorrect message written to the log!\n";
        }
    }
    return $rc; # Return code
}

Sẽ cập nhật với lời giải thích sau.


6
Đồng chí / đồng nghiệp của bạn nói: "Công việc tuyệt vời, đồng chí. Nhưng tại sao chúng ta cần phải 'ghi tệp nhật ký vào một tên ngẫu nhiên'?"
đơn cực

9
@laurencevs bình luận tốt. "Chúng tôi muốn giữ nhật ký của chúng tôi ẩn và khá an toàn. Có lẽ chúng tôi thậm chí nên thêm bảo mật tại chỗ. Ai sẽ xem một tệp cho một tên ngẫu nhiên? Kẻ tấn công sẽ tìm kiếm một tệp có logtên nếu ai đó độc hại đang cố gắng truy cập chúng. "
hmatt1

1
@chilemagic Ý bạn là kẻ thù của chúng ta, Goldstein và đoàn quân Á-Âu của anh ấy. Vì ai nhưng họ sẽ cố gắng tiếp cận họ với ác ý?
AJMansfield

@AJMansfield Chúng tôi luôn liên minh với Âu Á! Đến phòng 101 đồng chí!
Kaz Wolfe

@Mew hơn bạn cho đồng chí cảnh giác của bạn. Chúng tôi cần những đồng chí như bạn để đảm bảo Minitrue có thể giữ hồ sơ của chúng tôi trung thực. Phần còn lại đảm bảo nó sẽ được sửa thành "Ý bạn là kẻ thù của chúng ta, Goldstein và đoàn quân Eastasia của anh ta. Vì ai nhưng họ sẽ cố gắng tiếp cận họ với ác ý?"
AJMansfield
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.