Sonucu “merhaba dünya” olan bir matematiksel işlev yazın [kapalı]


9

"Merhaba dünya" nın tamsayı temsiliyle sonuçlanan bir matematiksel işlev yazın

Örneğin, "merhaba dünya" hex'te 68656c6c6f20776f726c64amaç "merhaba dünya" yı temsil eden bir sayı ile sonuçlanan bir matematik programı yazmak olacaktır.

İşte python kullanarak olası bir çözüm örneği:

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

Güçler, seriler, faktöriyeller ve diğer matematiksel işlemler gibi her türlü matematiksel denklem kullanılabilir.

Kurallar:

  • "Merhaba dünya" yı bir tamsayı olarak kodlamak / temsil etmek için kendi yolunuzu seçebilirsiniz. Karma işlevlerine de izin verilir

  • Matematiksel kütüphanelere (örn. Numpy, GMP) izin verilir.

  • Amaç matematik kısmına odaklanmak


1
Yaratıcılık nesnel değildir. Popülerlik yarışmasını mı düşünüyorsunuz ?
Kendall Frey

4
Kodlamaya karar vermenize izin verilirse, herhangi bir tam sayı "merhaba dünyasını" temsil edebilir. ör. -1 = "merhaba worlc", 0 = "merhaba dünya", 1 = "merhaba kötü" vb.
Kendall Frey

1
@kylek "En yaratıcı / ustaca" nın ötesinde kesin kazanma ölçütlerini belirtmediğiniz için, popülerlik yarışmasını kazanan kriter olarak ekleme özgürlüğünü aldım .
Victor Stafusa

2
(bu web sitesi bağlamında) tüm bilgisayar verileri ve programları önemsiz bir şekilde sayı olarak gösterilebilir - çünkü mucitlerin (Babbage ve ark.) kullandığı model budur. Ayrıca herhangi bir kodlamaya izin vermek, bunu sadece bir sayı veren en yaratıcı programı kimin yazabileceği konusunda bir yarışma haline getirir. Kaynak kodun "matematiksel işlemler" kullanması gerektiği anlamına gelir, ancak bir programın yaptığı her şey matematik opu olarak modellenebilir. ASCII kodlamasına ihtiyacınız olduğunu ve daha sonra "özel sayı" olarak gösterme yarışmasını yapmayı önerin
user2460798

1
Matematiksel terminolojinizle son derece hızlı ve gevşek oynuyorsunuz. Görünüşte birbirinin yerine "denklem" ve "işlev" kullanıyorsunuz. Bence aradığınız kelime "ifade". Ancak o zaman bile, soru iyi sorulmuyor. Benim için seçtiğim "merhaba dünya" için matematiksel kodlama, orijinal K&R merhaba dünya kaynak kodudur. Hey, işe yarıyor!
Tim Seguine

Yanıtlar:


14

Python 2.7

Rastgele sayı üretecinin bazı kötüye kullanımı, Python 2.7 üzerinde çalışır, ancak jeneratör tohumlama algoritmasını değiştirmiş gibi göründüğü için Python 3.x üzerinde çalışmaz;

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

Bu beni masamda yüksek sesle güldürdü. İnsanlar şu anda bana bakıyor: - /
jmiserez

25

Sadece yazdırmaktan daha iyisini yapacağım, sonsuza kadar defalarca yazacağım!

Rasyonel sayı

1767707668033969 / 3656158440062975

aşağıdaki base-36 genişletmesini döndürür:

0.helloworldhelloworldhelloworldhelloworldhelloworld...

Denemek! (Wolfram Alpha)

Veya daha bilinçaltı bir mesaj istiyorsanız şunu deneyin:

2399843759207982499621172523113947162810942763812298565948669
/ 1357602166130257152481187563160405662935023615

Hangi döndürür (yine taban 36'da):

helloworld.helpimtrappedinanumberfactoryhelpimtrappedinanumberfactoryhelpimtrappedinanumberfactory...

Programınız yalnızca tamsayılarla çalıştıysa, hiçbir zaman kesirli kısmı göremezsiniz.


12

Python (henüz bitmedi ... henüz!) Bitti! : 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)

Çıktılar 126207244316550804821666916(örneğinize eşdeğer 0x68656c6c6f20776f726c64)


Ne istediğimi iyi anlıyorsun.
kyle k

1
" Llamas lezzetli değil " haha ​​+1
assylias

2
Bu kazanmalı.
Ocak'ta

8

"Merhaba dünya" yı bir tamsayı olarak kodlamak / temsil etmek için kendi yolunuzu seçebilirsiniz.

İyi o zaman...

PHP

<?=1?>

burada 1 "merhaba dünya" yı temsil ediyor çünkü ben öyle dedim.


14
10
bazında

7

Hesap Makinesi Yazı Tipi / FreePascal

Bunu yayınlamakta sorun yaşayabilirim ama yine de yapacağım :-)

  1. 7734/100000 hesapla. Baştaki sıfırı maviye, diğer basamakları hesap makinesi yazı tipine değiştirin. Ters çevirin. Mavi O dünyayı temsil eder:

resim açıklamasını buraya girin

Bu çok tembel ise, buna ne dersiniz:

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.

resim açıklamasını buraya girin

0-5 numaralı daireler, renk abs (2n-1) ile belirlenir. Daire başına bir onaltılık basamak, sağ alttan saat yönünde en önemli bit aşağıya doğru renklendirilen kadranlar. Mistik sabitler 967EEF ve EDF7E9 hex ile.

Aşağıdaki ilkel ve BorPa'ya TurboPascal'a koyduğu için teşekkür ederiz, böylece FreePascal onu klonlayabilir.

prosedür Sektörü (x: SmallInt; y: SmallInt; StAngle: Kelime; EndAngle: Kelime; XRadius: Kelime; YRadius: Kelime); Sektör, başlangıç ​​(X, Y) ve yarıçapı XRadius ve YRadius olan bir elips sektörünü çizer ve doldurur.


Bu yöntemi daha önce düşünmemiştim, Kutunun dışında iyi düşünmek!
kyle k

3

Ruby & Python

Base 36 matematiğini kullanarak Ruby & Python'da kolayca bir tamsayı gösterimine ulaşırız:


Yakut

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

sonuç:

[29234652, 54903217]

veya genel bir işlev olarak ifade edilir:

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

misal:

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

piton

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

misal:

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

3

Bazı özenle hazırlanmış 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);

Bu iyi bir cevap, aradığım cevap bu.
kyle k

1

R6RS Şeması

#!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 (dekal olarak) çıktılar:

126207244316550804821666916

Orijinal uygulamam:

Raket (Şema lehçesi)

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

Ne oluyor?

Bu dizeyi alıp biraz uygularız stringTheory()(aslında gelecekten bir iletimdir):

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

Önce kelimeleri oluşturmak için noktalama işaretiyle böldük. Daha sonra karakterleri ondalık ASCII koduna dönüştürerek bir sayı kümesi oluştururuz. Bitişik harfler bitişik sayılar aahaline gelir (ör 9797. Olur ).

Daha sonra sayılar toplanır. Geri döndüğümüz şey 191212222216169tamamen işe yaramaz bir sayıdır, uzayda boş yere süzülen kayaların katrilyonları gibi bir anlamı yoktur. Bu dünyayı özel yapan nedir? Neden hayat bu. Bu sayıya hayatın anlamını vererek +=42o zaman elde ederiz 191212222216211;

Ama neden?

Ne anlama geliyor? Neden stringTheory("Hello world")elbette.


1

piton

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

Yakut

Herhangi bir dize bir tamsayı ile eşlenir.

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

Ters fonksiyonu:

# 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

Örnekler:

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

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

0

C #

Herhangi bir dizeyi (merhaba dünya veya başka bir şey) onaltılı dizeye dönüştürme yöntemi

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

Onaltılık dizeyi dizeye dönüştürme yöntemi

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

İşte tam C # programı gidiyor

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

Ve işte çıktı.

resim açıklamasını buraya girin


0

piton

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

Hedef sayıyı yinelemeli olarak en fazla dört kareye toplar. Temel durumum <100. Http://www.alpertron.com.ar/FSQUARES.HTM kullandımAyrışmaları hesaplamak için .

(Belki temel bir <= 1 vakası ilginç olurdu ...)


0

piton

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

Sonuç gerçekten bir sayı, yemin ederim!


0

Sadece küçük bir C numaraları ile eğlenceli, özel bir şey.

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

gösteri


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.