Viết một hàm toán học có kết quả là thế giới hello hello [đóng]


9

Viết hàm toán học dẫn đến biểu diễn số nguyên của "hello world"

Ví dụ: "hello world" trong hex là 68656c6c6f20776f726c64vì vậy mục tiêu sẽ là viết một chương trình toán học dẫn đến một số đại diện cho "hello world".

Dưới đây là một ví dụ về một giải pháp có thể sử dụng python:

print(2*2*3*59*61*97*416510539*72330832279)==int("68656c6c6f20776f726c64", 16)

Bất kỳ loại phương trình toán học nào cũng có thể được sử dụng, chẳng hạn như: lũy thừa, chuỗi, giai thừa và các phép toán khác.

Những quy định:

  • Bạn có thể chọn cách riêng để mã hóa / đại diện cho "thế giới xin chào" dưới dạng số nguyên. Hàm băm cũng được cho phép

  • Thư viện toán học (ví dụ numpy, GMP) được cho phép.

  • Mục đích là tập trung vào phần toán học


1
Sáng tạo là không khách quan. Bạn đang nghĩ về cuộc thi nổi tiếng ?
Kendall Frey

4
Bất kỳ số nguyên nào cũng có thể đại diện cho "hello world" nếu bạn được phép quyết định mã hóa. ví dụ -1 = "xin chào worlc", 0 = "xin chào thế giới", 1 = "xin chào worle", v.v.
Kendall Frey

1
@kylek Vì bạn không chỉ định tiêu chí chiến thắng chính xác ngoài "sáng tạo / khéo léo nhất", tôi đã lấy tự do để thêm cuộc thi phổ biến làm tiêu chí chiến thắng.
Victor Stafusa

2
(trong ngữ cảnh của trang web này), tất cả dữ liệu và chương trình máy tính có thể được biểu diễn một cách tầm thường dưới dạng số - bởi vì đó là mô hình mà các nhà phát minh (Babbage, et al) đã sử dụng. Cũng cho phép bất kỳ mã hóa nào thực sự làm cho cuộc thi này trở thành một cuộc thi của những người có thể viết chương trình sáng tạo nhất mang lại một con số. Có một hàm ý rằng mã nguồn nên sử dụng "các phép toán", nhưng bất cứ điều gì một chương trình làm đều có thể được mô hình hóa như một toán học op. Đề nghị bạn yêu cầu mã hóa ASCII và sau đó thực hiện cuộc thi về việc thể hiện nó dưới dạng "số đặc biệt" Xem: www2.stetson.edu/~efriedma/numbers.html
user2460798

1
Bạn đang chơi cực kỳ nhanh và lỏng lẻo với thuật ngữ toán học của bạn. Bạn đang sử dụng "phương trình" và "hàm" dường như có thể hoán đổi cho nhau. Tôi nghĩ rằng từ bạn đang tìm kiếm là "biểu hiện". Nhưng ngay cả khi đó, câu hỏi không được đặt ra. Mã hóa toán học cho "hello world" tôi chọn cho tôi là mã nguồn hello world K & R ban đầu. Oh, hey, nó hoạt động!
Tim Seguine

Câu trả lời:


14

Python 2.7

Một số lạm dụng trình tạo số ngẫu nhiên, hoạt động trên Python 2.7 nhưng không phải Python 3.x vì trình tạo dường như đã thay đổi thuật toán seeding;

>>> import random
>>> n=[(15,30,15,25,15,0,-15,-25,-15,-30,-15),(107,35,34,26,22,0,71,188,94,64,81)]
>>> random.seed(4711)
>>> m = zip("MERRY CHRISTMAS",*n)
>>> print(''.join(map(lambda x:chr(ord(x[0])+random.randint(x[1],x[2])),m)))

hello world

Điều này làm tôi cười lớn trên bàn làm việc của tôi. Mọi người đang nhìn chằm chằm vào tôi ngay bây giờ: - /
jmiserez

25

Tôi sẽ làm tốt hơn là chỉ in nó, tôi sẽ in nó vô số lần!

Số hữu tỉ

1767707668033969 / 3656158440062975

trả về bản mở rộng cơ sở 36 sau đây:

0.helloworldhelloworldhelloworldhelloworldhelloworld...

Hãy thử nó! (Wolfram Alpha)

Hoặc, nếu bạn muốn một tin nhắn thăng hoa hơn, hãy thử:

2399843759207982499621172523113947162810942763812298565948669
/ 1357602166130257152481187563160405662935023615

Trả về (một lần nữa trong cơ sở 36):

helloworld.helpimtrappedinanumberfactoryhelpimtrappedinanumberfactoryhelpimtrappedinanumberfactory...

Nếu chương trình của bạn chỉ hoạt động với số nguyên, bạn sẽ không bao giờ thấy phần phân số.


12

Python (chưa hoàn thành ... chưa!) Đã hoàn thành! : D

number = ((sum(b'This text will end up converting to the text "hello world" by a bunch of math.') *
sum(b'For example, multiplication will be used to increase the number so that it may reach the required result.') *
sum(b'Wow, double multiplication! The required result number is extremely big so I have to use lots of math to get there.') *
sum(b'TRIPLE multiplication?!?!?! Wow!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Did I put too many exclamation points?') *
sum(b'I think maybe I might have put too many exclamation points, oops. :(') *
sum(b'This is taking a long time...') *
sum(b'A very, very, very long time...')) // 2)

number -= (sum(b'Okay, the number is a bit too high. Blah. This is extremely hard.') *
sum(b'I need to reduce it. I will just keep multiplying again! Yay! That seems effective!') *
sum(b'I don\'t know what to write now... I used up all my creativity in the previous number.') *
sum(b'So. Uhhh, how has your day been? Was it good? I wonder how many people are still reading.') *
sum(b'Gah! There is nothing to type about anymore! I will just type randomness then.') *
sum(b'Do you like pie? I like pie. Refrigerator. The chicken ate the potato. Llamas are not tasty.'))

number -= (sum(b'Blah, I am still a tiny bit too high!') *
sum(b'This is very frustrating!') * sum(b'Argh!!!!!!!') *
sum(b'I have even less creative ideas now since I have written two paragraphs already.') *
sum(b'Well, I suppose they\'re not paragraphs. They\'re just blocks of code.') *
sum(b'The only reason I made that remark was to increase this number to subtract, so that I reach my target.'))

number -= (sum(b'I am an extremely miniscule amount over the target!!!') *
sum(b'I am so close!!! So close!!') *
sum(b'I must make it!!! I will!!!') *
sum(b'I shall NEVER give up!!!') *
sum(b'Okay, ummm... maybe not exactly "never"...') *
sum(b'I mean, this is REALLY hard...'))

number -= (sum(b'I am so close. This is just ridiculous.') *
sum(b'Just ridiculous. And that\'s awesome :D') *
sum(b'Why am I doing this?!?') *
sum(b'The answer\'s probably "becase I can."') *
sum(b'Notice how most of the text in this program is meaningless.'))

number -= (sum(b'How have I been above my target this whole time? That is very odd.') *
sum(b'I wonder how much time I could have saved if I removed a few characters in the first block.') *
sum(b'I wish I did that. That would have made it so much easier.... But oh well.') *
sum(b'Well, I am really really really really really really close now!'))

number -= (sum(b'I am so close!') *
sum(b'I will never give up now! Not after all this!') *
sum(b'I wonder if I will ever get exactly on the target. What if I do, and then discover a typo? :O') *
sum(b'So close!'))

number -= (sum(b'Wow; this is the eighth block. That\'s a lot of blocks!') *
sum(b'I only have a little more to go! I must finish! I will!') *
sum(b'It is starting to get harder thinking of things to type than it is getting to the target...'))

number -= (sum(b'These strings are short') *
sum(b'So the number to subtract is less') *
sum(b'Hi'))

number += (sum(b'Finally adding') *
sum(b'That\'s new') *
sum(b':D'))

number -= (sum(b'I am back to subtraction, and also longer strings.') *
sum(b'But this time I only get two strings!'))

number -= (sum(b'I have switched over to adding the strings, not multiplying them!') +
sum(b'I am really really close! So close that I can\'t even multiply two strings to subtract anymore!') +
sum(b'This is very exciting; I\'ve nearly made it! Only a few more strings to add...') +
sum(b'I ran out of ideas for what to type again... I will just type exactly what I am thinking, which is what I am doing now actually.') +
sum(b'But now the only thing I am thinking about is getting to the target, and there is not much about that to type...') +
sum(b'I am only a few thousand away!!!!!!!!!!!!'))

number += 8 # NOOOOOOOOOOOOOOOOOOOOOOOOOOOOO

print(number)

Đầu ra 126207244316550804821666916(tương đương với ví dụ của bạn, 0x68656c6c6f20776f726c64)


Bạn có một sự hiểu biết tốt về những gì tôi đang hỏi.
kyle k

1
" Llamas không ngon " haha ​​+1
assylias

2
Điều này sẽ giành chiến thắng.
tomsmeding

8

Bạn có thể chọn cách riêng để mã hóa / đại diện cho "thế giới xin chào" dưới dạng số nguyên.

Chà, vậy thì ...

PHP

<?=1?>

trong đó 1 đại diện cho "thế giới xin chào" bởi vì tôi đã nói như vậy.


14
10trong căn cứ - "xin chào thế giới"
Emil Vikström

7

Phông chữ Máy tính / FreePascal

Tôi có thể gặp rắc rối khi đăng bài này, nhưng dù sao tôi cũng sẽ làm điều đó :-)

  1. Tính 7734/100000. Thay đổi số 0 đứng đầu thành màu xanh và các chữ số khác thành phông chữ máy tính. Xoay nó lộn ngược. Chữ O màu xanh tượng trưng cho thế giới:

nhập mô tả hình ảnh ở đây

Nếu đó là quá lười biếng, làm thế nào về điều này:

uses graph;
var gd, gm : integer;
var n,m:integer;

begin
  gd := D4bit;
  gm := m640x480;
  initgraph(gd,gm,'');
  setcolor(black);

  For n:=0 to 5  do for m:=0 to 3 do begin;
    setfillstyle(solidfill,(abs(n*2-1)));

    if(($967EEF shr (20-n*4+m)) and 1) = 1
      then sector(50+n*80,100,90*m,90*(m+1),40,60);

    if(($EDF7E9 shr (20-n*4+m)) and 1) = 1
      then sector(50+n*80,300,90*m,90*(m+1),40,60);
    end;

  readln;
  closegraph;
end.

nhập mô tả hình ảnh ở đây

các vòng tròn được đánh số 0-5, màu được xác định bởi abs (2n-1). Một chữ số hex trên mỗi vòng tròn, góc phần tư được tô màu từ bit quan trọng nhất xuống dưới, theo chiều kim đồng hồ từ dưới cùng bên phải. Bởi các hằng số huyền bí 967EEF và EDF7E9 hex.

Đặc biệt cảm ơn những người nguyên thủy sau đây và Borland đã đưa nó vào TurboPascal để FreePascal có thể sao chép nó.

thủ tục Ngành (x: SmallInt; y: SmallInt; StAngle: Word; EndAngle: Word; XRadius: Word; YRadius: Word); Khu vực vẽ và lấp đầy một khu vực của hình elip với tâm (X, Y) và bán kính XRadius và YRadius, bắt đầu từ góc Bắt đầu và kết thúc ở góc Dừng.


Tôi chưa nghĩ đến phương pháp này trước đây, Suy nghĩ tốt ra khỏi hộp!
kyle k

3

Ruby & Python

Sử dụng toán cơ sở 36, chúng ta đến một biểu diễn số nguyên khá dễ dàng trong Ruby & Python:


Hồng ngọc

%w(hello world).map{|n|n.to_i(36)}

kết quả:

[29234652, 54903217]

hoặc, được biểu thị dưới dạng hàm chung:

def f(words); words.split.map{|n|n.to_i(36)}; end

thí dụ:

f("hello world")
=> [29234652, 54903217]

Con trăn

def f(words): return map(lambda n: int(n,36), words.split())

thí dụ:

>>> f("hello world")
[29234652, 54903217]

3

Một số PHP được tạo cẩn thận:

$x=18306744;
$w=($z=($y=30)/3)/2;
echo base_convert($x, $z, $y+$z/$w),chr($y+$z/$w).base_convert($x*($y/$z)-$w*41*83,$z,$y+$y/$w);

Đây là một câu trả lời hay, Đó là loại câu trả lời tôi đang tìm kiếm.
kyle k

1

Sơ đồ R6RS

#!r6rs
(import (rnrs))
(define (hello-world)
  (bitwise-xor (fold-left (lambda (acc d) 
                        (+ (* acc 256) 
                           (+ (bitwise-and 255 acc) d)))
                      104
                      '(-3 7 0 3 8 0 -8 3 -6 -8))
               (bitwise-arithmetic-shift 87 40)))

Đầu ra # x68656c6c6f20776f726c64 (theo số thập phân):

126207244316550804821666916

Triển khai ban đầu của tôi là:

Vợt (phương ngữ Scheme)

(define (hello-world)
  (bitwise-xor (foldl (lambda (d acc) 
                        (+ (* acc 256) 
                           (+ (bitwise-and 255 acc) d)))
                      104
                      '(-3 7 0 3 8 0 -8 3 -6 -8))
               (arithmetic-shift 87 40)))

1

JavaScript

function stringTheory(theory) {
  var proof = 0;
  var principles = theory.split(/[ ,.'-]/);
  for (var i = 0; i < principles.length; i++) {
      var formula = '';
      for (var j = 0; j < principles[i].length; j++) {
        formula += principles[i].charCodeAt(j).toString(10);
      }
      proof += +formula;
  }
  return proof;
}

console.log(
/* \2 and \3 are start of text and end of text characters */ 
stringTheory('\2 Yo it\'s 4327 - Go to space, look back, and see the dot of a small blue rock you once sat on amid the vast empty void - KA-BOOM - you are in awe of it. "Ah" - so tiny in this vast space yet you are even more so. A mere atom in an ocean of stars, the earth a speck of dust to the sun\'s ping-pong ball. One day you shall go back and as your toes touch the soft soil once more, the cool wind in your hair as you cast your gaze upon the moon, a mere rock just like this one, and bask in it\'s warm glow - Ah. Only then can you know the scale of it all, what luck you have to call this place home.  And with this new ken, a love you\'ve kept for all of time but had not seen - for it is clear to you now. You lay open your arms and fill the air with your song - (aah) ~o Good-bye space and ... o? \3') + 42
);

Chuyện gì đang xảy ra vậy?

Chúng tôi lấy chuỗi này và áp dụng một chút stringTheory()(nó thực sự là một truyền từ tương lai):

'\2 Yo it\'s 4327 - Go to space, look back, and see the dot of a small blue rock you once sat on amid the vast empty void - KA-BOOM - you are in awe of it. "Ah" - so tiny in this vast space yet you are even more so. A mere atom in an ocean of stars, the earth a speck of dust to the sun\'s ping-pong ball. One day you shall go back and as your toes touch the soft soil once more, the cool wind in your hair as you cast your gaze upon the moon, a mere rock just like this one, and bask in it\'s warm glow - Ah. Only then can you know the scale of it all, what luck you have to call this place home. And with this new ken, a love you\'ve kept for all of time but had not seen - for it is clear to you now. You lay open your arms and fill the air with your song - (aah) ~o Good-bye space and ... o? \3'

Đầu tiên chúng tôi chia nó tại dấu câu của nó để tạo thành từ. Sau đó, chúng tôi tạo một bộ số bằng cách chuyển đổi các ký tự thành mã ASCII thập phân của chúng. Các chữ cái liền kề trở thành số liền kề (ví dụ: aatrở thành 9797).

Các con số sau đó được tổng hợp. Những gì chúng tôi nhận lại là 191212222216169một con số hoàn toàn vô dụng, nó không có ý nghĩa gì, giống như các khối đá tứ phương trôi nổi trong không gian. Điều gì làm cho thế giới này đặc biệt? Tại sao nó là cuộc sống. Vì vậy, bằng cách cho con số này ý nghĩa của cuộc sống, +=42 sau đó chúng ta nhận được 191212222216211;

Nhưng tại sao?

Điều đó có nghĩa là gì? Tại sao nó có nghĩa là stringTheory("Hello world")tất nhiên.


1

Con trăn

from math import fsum
c=[104.,-4412.705557362921,12008.518259002305,-13041.051140948179,7566.060243625142,-2619.91695720304,567.427662301322,-77.52280096313,6.48776455347,-0.303552138602,0.006079144624]
def f(x):
    return fsum([c[i]*x**i for i in range(len(c))])
s=""
for i in range(11):
    s+=chr(int(round(f(i))))
print s

0

Hồng ngọc

Bất kỳ chuỗi nào được ánh xạ tới một số nguyên.

# encode string to integer
def str_to_int(s)
  i = 0
  s.chars.each do |c|
    i = i << 7 | c.ord
  end
  i
end

Hàm nghịch đảo:

# decode integer to string
def int_to_str(i)
  s = ''
  while i > 0 do 
    s = (i & 0x7f).chr + s
    i = i >> 7
  end
  s
end

Ví dụ:

str_to_int("ABC")
=> 1073475
int_to_str(1073475)
=> "ABC"

str_to_int("hello world")
=> 123720932638399026476644
int_to_str(123720932638399026476644)
=> "hello world"

0

C #

Một phương thức để chuyển đổi bất kỳ chuỗi nào (hello world hoặc thứ gì khác) thành chuỗi thập lục phân

string Encode(string text)
{
   string hexValue = String.Empty;
   foreach(char c in text)
      hexValue += String.Format("{0:X}", (int)c);
   return hexValue;
}

Một phương thức để chuyển đổi chuỗi thập lục phân thành chuỗi

string Decode(string hexValue)
{
   string text = String.Empty;
   for (int i = 0; i < hexValue.Length; i += 2)
   {
     int value = Convert.ToInt32(hexValue.Substring(i, 2), 16);
     text += (char)value;
   }
   return text;
}

Đây là chương trình C # hoàn chỉnh

using System;

namespace ConsoleApplication1
{
    class Program
    {       

        static string Encode(string text)
        {
            string hexValue = String.Empty;
            foreach(char c in text)
                hexValue += String.Format("{0:X}", (int)c);
            return hexValue;
        }

        static string Decode(string hexValue)
        {
            string text = String.Empty;

            for (int i = 0; i < hexValue.Length; i += 2)
            {
                int value = Convert.ToInt32(hexValue.Substring(i, 2), 16);
                text += (char)value;
            }

            return text;
        }

        static void Main(string[] args)
        {  
            string Text1 = "Hello World!";
            Console.WriteLine("Before Encoding: " + Text1 + "\n");

            string Hex = Encode(Text1);
            Console.WriteLine("After endoding: " + Hex + "\n");

            string Text2 = Decode(Hex);
            Console.WriteLine("After decoding: " + Text2 + "\n");
        }
    }
}

Và đây là đầu ra.

nhập mô tả hình ảnh ở đây


0

Con trăn

def D(A):
    try:
        return sum(D(x)**2 for x in A)
    except TypeError:
        return A
print hex(D([[[[33,22,3,1],[20,13,2],5],[[31,19,1],[11,5,3],1]],[[[26,13],[18,14,6,4],1],[[12,10],[10,3,1],2],4],28]))

Đệ quy phân tách số mục tiêu thành tổng số nhiều nhất là bốn hình vuông. Trường hợp cơ sở của tôi là <100. Tôi đã sử dụng http://www.alpertron.com.ar/FSQUARES.HTM để tính toán phân tách.

(Có lẽ trường hợp cơ bản của <= 1 sẽ rất thú vị ...)


0

Con trăn

def church(i):
    if i > 0:
        return 'f(' + church(i-1) + ')'
    else:
        return 'x'

def church_string(bs):
    import base64
    return church(int(base64.b16encode(bs), 16))

print(church_string(b'hello world'))

Kết quả thực sự là một con số, tôi thề!


0

Chỉ cần một chút C vui vẻ với những con số, không có gì đặc biệt.

int main()
{
    int a , b, c;
    double i = 0, f = 0;

    for (; i < 1; i += .00000012785666)
        f += cos(i);
    c = f;
    a = f * 276.393089;
    b = a + f * 7.4358109;

    printf("%.4s%.4s%.4s\n", &a, &b, &c);
}

bản giới thiệu


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.