Напишіть математичну функцію, результатом якої є "привіт світ" [закритий]


9

Напишіть математичну функцію, що призводить до цілого подання "привіт світу"

Наприклад, "здравствуйте, світ" у шістнадцятковій. 68656c6c6f20776f726c64Таким чином, метою буде написати математичну програму, в результаті якої число "представляє привіт світ".

Ось приклад можливого рішення за допомогою python:

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

Можуть бути використані будь-які типи математичних рівнянь, такі як: потужності, ряд, фактичні дані та інші математичні операції.

Правила:

  • Ви можете вибрати власний спосіб кодування / представлення "привіт світу" як ціле число. Функції хешу також дозволені

  • Математичні бібліотеки (наприклад, numpy, GMP) дозволені.

  • Намір зосередити увагу на математичній частині


1
Творчість не є об'єктивною. Ви думаєте про популярність-конкурс ?
Кендалл Фрей

4
Будь-яке ціле число може представляти "привіт світ", якщо вам дозволяється вирішити кодування. напр. -1 = "привіт Worlc", 0 = "привіт світ", 1 = "привіт Worle" тощо.
Кендалл Фрей

1
@kylek Оскільки ви не вказали точних критеріїв виграшу, що перевищують "найкреативніших / геніальних", я взяв на себе сміливість додати популярність-конкурс як критерій виграшу.
Віктор Стафуса

2
(у контексті цього веб-сайту) всі комп'ютерні дані та програми можна тривіально представити у вигляді цифр - тому що це модель, яку використовували винахідники (Babbage та ін.). Також дозволити будь-яке кодування дійсно просто робить це змаганням того, хто може написати найкреативнішу програму, яка дає число. Мається на увазі, що вихідний код повинен використовувати "математичні операції", але все, що робить програма, може моделюватися як математичний варіант. Запропонуйте вам вимагати кодування ASCII, а потім скласти конкурс щодо представлення його як "спеціального номера" Див.: Www2.stetson.edu/~efriedma/numbers.html
user2460798

1
Ви граєте надзвичайно швидко і вільно зі своєю математичною термінологією. Ви використовуєте "рівняння" та "функції", здавалося б, взаємозамінні. Я думаю, що слово, яке ви шукали, - це «вираз». Але навіть тоді питання недостатньо поставлене. Математичне кодування для "привіт світу", який я обираю для мого, є оригінальним вихідним кодом привітного світу K&R. Ой, ей, це працює!
Тім Сегуїн

Відповіді:


14

Python 2.7

Деяке зловживання генератором випадкових чисел працює на Python 2.7, але не на Python 3.x, оскільки генератор, схоже, змінив алгоритм висіву;

>>> 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

Це змусило мене голосно сміятися за моїм столом. Зараз люди дивляться на мене: - /
jmiserez

25

Я зроблю краще, ніж просто надрукую, я надрукую нескінченно багато разів!

Раціональне число

1767707668033969 / 3656158440062975

повертає таке розширення base-36:

0.helloworldhelloworldhelloworldhelloworldhelloworld...

Спробуй! (Вольфрам Альфа)

Або, якщо ви хочете більш підсвідоме повідомлення, спробуйте:

2399843759207982499621172523113947162810942763812298565948669
/ 1357602166130257152481187563160405662935023615

Що повертається (знову в базі 36):

helloworld.helpimtrappedinanumberfactoryhelpimtrappedinanumberfactoryhelpimtrappedinanumberfactory...

Якби ваша програма працювала лише з цілими числами, ви ніколи не побачили дробову частину.


12

Python (ще не закінчено ... ще!) Закінчено! : 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)

Виходи 126207244316550804821666916(еквівалентні вашому прикладу 0x68656c6c6f20776f726c64)


Ви добре розумієте, про що я прошу.
kyle k

1
" Лами не смачні " ха-ха +1
assylias

2
Це має перемогти.
tomsmeding

8

Ви можете вибрати власний спосіб кодування / представлення "привіт світу" як ціле число.

Ну гаразд...

PHP

<?=1?>

де 1 представляє "привіт світ", тому що я це сказав.


14
10в базі- "привіт світ"
Еміль Вікстрьом

7

Шрифт / FreePascal калькулятор

У мене можуть виникнути проблеми з повідомленням про це, але я все одно зроблю це :-)

  1. Обчисліть 7734/100000. Змініть початковий нуль на синій, а інші цифри - шрифтом калькулятора. Переверніть її догори дном. Синій O являє собою світ:

введіть тут опис зображення

Якщо це занадто ліниво, як щодо цього:

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.

введіть тут опис зображення

кола, пронумеровані 0-5, колір визначається abs (2n-1). Один шістнадцятковий розряд на коло, квадрати кольорові від найзначнішого біта вниз, за ​​годинниковою стрілкою знизу праворуч. За містичними константами 967EEF та EDF7E9 hex.

Особлива подяка наступним примітивам та Borland за те, що він помістив його в TurboPascal, щоб FreePascal міг його клонувати.

Сектор процедури (x: SmallInt; y: SmallInt; StAngle: Word; EndAngle: Word; XRadius: Word; YRadius: Word); Сектор малює і заповнює сектор еліпса з центром (X, Y) і радіусами XRadius і YRadius, починаючи з кута Старту і закінчуючи під кутом Стоп.


Я раніше не замислювався над цим методом, Добре роздумуючи з коробки!
kyle k

3

Ruby & Python

Використовуючи математику бази 36, ми досить легко дістаємо до цілого представлення в Ruby & Python:


Рубін

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

результат:

[29234652, 54903217]

або, виражена загальною функцією:

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

приклад:

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

Пітон

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

приклад:

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

3

Деякі ретельно складені PHP:

$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);

Це хороша відповідь. Це відповідь, яку я шукав.
kyle k

1

Схема 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)))

Виходи # x68656c6c6f20776f726c64 (у декалі):

126207244316550804821666916

Моя оригінальна реалізація:

Ракетка (діалект схеми)

(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
);

Що відбувається?

Ми беремо цей рядок і застосовуємо трохи 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'

Спочатку ми розділимо його в розділові знаки, щоб утворити слова. Потім ми створюємо набір чисел, перетворюючи символи в їх десятковий код ASCII. Суміжні букви стають суміжними цифрами (наприклад, aaстає 9797).

Потім цифри підсумовуються. Те, що ми повертаємось, - 191212222216169абсолютно марне число, воно не має жодного значення, як і квадрильйони гірських порід, які плавно плавають у просторі. Що робить цей світ особливим? Чому це життя. Отже, надаючи цьому номеру сенс життя, +=42 тоді ми отримуємо 191212222216211;

Але чому?

Що це означає? Чому це означає, stringTheory("Hello world")звичайно.


1

Пітон

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

Рубін

Будь-який рядок відображається на ціле число.

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

Зворотна функція:

# 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

Приклади:

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

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

0

C #

Метод перетворення будь-якого рядка (привіт, світ чи щось інше) у шістнадцятковий рядок

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

Метод перетворення шістнадцяткової строки в рядок

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;
}

Тут йде повна програма C #

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");
        }
    }
}

І ось вихід.

введіть тут опис зображення


0

Пітон

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]))

Рекурсивно розбиває цільове число на суми щонайбільше чотирьох квадратів. Мій базовий випадок - <100. Я використовував http://www.alpertron.com.ar/FSQUARES.HTM для обчислення розкладу.

(Можливо, базовий випадок <= 1 був би цікавим ...)


0

Пітон

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'))

Результат справді - кількість, клянусь!


0

Лише трохи веселощів із числами, нічого особливого.

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);
}

демонстрація


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.