2010-05-17 26 views
9

có thể viết chương trình in mã nguồn riêng của nó bằng cách sử dụng "hàm tạo chuỗi" không?có thể viết chương trình in mã nguồn riêng của mình bằng cách sử dụng "chức năng tạo chuỗi"

thứ tôi gọi là hàm tạo chuỗi chỉ đơn giản là hàm trả về giá trị trong khoảng thời gian cụ thể (ví dụ: ascii-charecters (32-126) có thể in). bây giờ, rằng chuỗi được tạo ra này nên là các chương trình mã nguồn riêng. như bạn thấy, việc thực hiện một hàm trả về một chuỗi tùy ý thực sự tầm thường, nhưng vì chuỗi trả về phải chứa việc thực hiện chức năng, nó là một nhiệm vụ không tầm thường.

đây là cách một chương trình như vậy ( đầu ra tương ứng của nó) có thể trông giống như

#include <stdio.h> 

int fun(int x) { 
    ins1; 
    ins2; 
    ins3; 
    . 
    . 
    . 
    return y; 
} 

int main(void) { 
    int i; 
    for (i=0; i<size of the program; i++) { 
     printf("%c", fun(i)); 
    } 
    return 0; 
} 

i cá nhân tôi nghĩ nó không phải là có thể, nhưng kể từ khi tôi không biết rất nhiều về những vấn đề cơ bản i đăng suy nghĩ của tôi ở đây. Tôi thực sự mong được nghe một số ý kiến!

+0

Kiểm tra mã tôi đã đăng bên dưới. Đó là những gì bạn muốn? Tôi không chắc chắn 100% các quy tắc của bạn là gì. – sigfpe

Trả lời

1

Điều bạn đang đề cập đến là QUINE. Bài viết của Wiki về nó khá tốt, với một số liên kết hữu ích. http://en.wikipedia.org/wiki/Quine_%28computing%29

+0

tôi đã gắn thẻ câu hỏi của tôi với 'quine', bạn thấy: P. tôi nghĩ rằng một quine "phổ biến" hoạt động hoàn toàn khác nhau. nếu tôi sai, thì hãy cho tôi xem cái nào hoạt động chính xác theo cách tôi mô tả. tôi, cho bản thân mình, không may mắn khi tìm được một cái .. – guest

+0

Tôi không hiểu tại sao không thể. Nếu chức năng của bạn lưu trữ một mảng ký tự với nguồn của chương trình trong nó, nó sẽ hoạt động tốt. Nó sẽ, trên thực tế, rất giống với ví dụ C đầu tiên trong trang wiki. – corsiKa

+0

vấn đề là chức năng tạo ra đầu ra "toán học", không lưu trữ bất cứ thứ gì! vì vậy khi tôi gọi hàm với giá trị tăng dần: vui vẻ (0) = 35 = '#', vui vẻ (1) = 105 = 'i', vui vẻ (2) = 110 = 'n', v.v .. – guest

2

Nếu bạn biết cách mã hóa mảng dưới dạng hàm (có vẻ như bạn đã biết cách thực hiện điều này) thì đảm bảo có thể thực hiện được.

Nhưng để nghi ngờ Thomases, here là ví dụ C. Nó có chức năng tạo chương trình chỉ sử dụng +, -, *,/hoặc gọi các hàm khác sử dụng chúng.

Bạn luôn có thể nhận được tiền phạt nếu bạn đã hoàn tất Turing và tự do in những gì bạn thích.

Các vấn đề liên quan