Najmniej zrozumiały generator liczb pseudolosowych.

0

Witam ;)
Tym razem z nudów zakładam taki temat.
Liczy się, aby program/skrypt generował liczby pseudolosowe (lub losowe - jak kto woli :D).
Język programowania dowolny.
Należy najpierw podać język, potem wrzucić kod a na końcu wynik.
W komentarzach proszę podawać ile punktów powinien dostać program/skrypt (skala od od 0 to 10);
Zasady:

  1. Nie można oceniać własnego kodu
  2. Zakaz używania dodatkowych modułów/bibliotek (tzn.mogą być tylko podstawowe)
  3. Rozkład dowolny
    No więc ja zacznę :]
    BeFunge:
v




>            v
.   > > > v <
^   ^ ^ ^ v ^
^ 1<?<?<?<?<??v
^ 2<?<? v < vvv
^ 3<?<?<?<?<??v
^ 4<?<?>v ^ vvv
^ 5<?<?<?>^<??v
^ 6<?<?<v   v<<
^ 7<?<?<
^ 8<?<?<
^ 9<?<?<
^ 0<?<?<
    > > > ^ <

befunge.png

5

http://xkcd.com/221/

int getRandomNumber() {
  return 4; // chosen by fair dice roll, guaranteed to be random
}
0

@Patryk27 - nie znając Befunge twój kod wygląda zupełnie nieczytelnie. Ale znając Befunge, napisałeś prawie najprostszy możliwy generator :P.

Obfuskacja kodu w C# to ciężka sprawa - nie ma ani szalonych define-ów, niejawnych rzutowań i arytmetyki wskaźników jak w C++, nie ma dynamicznego wykonywania kodu jak w językach skryptowych (Python, Ruby, Javascript), nie ma szalenia z funkcjami jak w haskellu, no i nie jest perlem.

Ostatecznie wynik mojej próby uczynienia C# nieczytelnym wygląda tak (VS automatycznie formatuje kod więc musiałem go pilnować)

using _ = System.Func<int, int>;
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static int GenRand(int s)
        {
            return
                ((_)((x)=>{return((((_)((y)=>{return
                ((_)((z)=>{return x*x*y*z;}))(x+y);}
                ))(x*x+3)%2==0)?((_)((y)=>{return((_
                )((z)=>{return x*y+y*z;}))(2*x+y);})
                )(x*(x-5)/2):((_)((y)=>{return((_)((
                z)=>{return x*y+z*z;}))(x+2*y);}))(x
                -14+(x-2)*(x+2)))%((_)((y)=>{return(
                (_)((z)=>{return x*y+z+1;}))(2*x+2*y
                );}))(x==0?x+5:((x*x)*(x-1)));}))(s);
        }

        static void Main(string[] args)
        {
            for (int i = 0; i < 100; i++)
            {
                int next = GenRand(i);

                Console.WriteLine(next);
                Console.ReadKey(true);
            }
        }
    }
}
0

Obfuskacja kodu w C# to ciężka sprawa - nie ma ani szalonych define-ów, niejawnych rzutowań i arytmetyki wskaźników jak w C++
są wskaźniki. a zobacz też to:
http://blogs.msdn.com/b/michkap/archive/2005/02/07/368570.aspx

1 użytkowników online, w tym zalogowanych: 0, gości: 1