Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  75 6351
Hei.

Jeg tenkte å starte denne tråden fordi det (i tillegg til at det blir litt moro for oss som kan programmere) kunne bli en god tråd for de som har lyst til å begynne å programmere.

Tråden fungerer sånn at den som svarer på forrige oppgave/kode, skrev en ny kode, på den måten kan nybegynnere se på hva de vil begynne (evt. gå videre på) med.

Koder for alle programmeringspråk godtas, husk bare å si hvilket programmeringspråk det er. Det er bare programmer som ikke har GUI og hele programmkoder som skal være med her.

Husk når du skriver en ny oppgave:
Skriv svaret på forrige oppgave.
Skriv hva koden er laget i (programmeringspråk).
Skriv koden i [code]-tag (Du merker koden å trykker på # på kontrollpanelet på den siden som man oppretter nye tråder i (Ikke hurtigsvar).

Altså: Svaret på oppgavene skal være hva programmet gjør.

Her er første oppgave, den er laget i Java:

Kode

class enkeltProgram {
    public static void main(String[] args) {
        System.out.println("Hallo verden");
    }
}
Sitat av Herû Vis innlegg
Hei.

J

Kode

class enkeltProgram {
    public static void main(String[] args) {
        System.out.println("Hallo verden");
    }
}
Vis hele sitatet...
den viser teksten "Hallo verden".

oppgave i Python:

Kode

print ('Tast inn et tall')
            pluss1 = input('første tall: ')
            pluss2 = input('Tast inn det neste tallet')
            print 'svaret på regnestykket er', pluss1+pluss2
[code]
Sitat av Mathiasbk Vis innlegg
den viser teksten "Hallo verden".

oppgave i Python:

Kode

print ('Tast inn et tall')
            pluss1 = input('første tall: ')
            pluss2 = input('Tast inn det neste tallet')
            print 'svaret på regnestykket er', pluss1+pluss2
Vis hele sitatet...
Du har lagd en funksjon som som skulle addere pluss1 og pluss2 men tror det failet litt.

neste oppgave? (denne er lagd i python 2.6) er vel egentlig bare en enkel kalkulator..;

Kode

while loop == 1:
    #print hva dine valg er
    print "velkommen til kalkulator.py"

    print "Dine valg er:"
    print " "
    print "1) Addere"
    print "2) Subtrahere"

    print "3) Multiplisere"

    print "4) Dividere"
    print "5) lukk kalkulator.py"
    print "6) Start programmet på nytt"
    print " "

    choice = input("Velg et av alternativene over: ")
    if choice == 1:
        add1 = input("pluss dette tallet: ")
        add2 = input("med dette tallet: ")
        print add1, "+", add2, "=", add1 + add2 
    elif choice == 2:
        sub2 = input("Subtraher dette tallet: ")
        sub1 = input("fra dette tallet: ")
        print sub1, "-", sub2, "=", sub1 - sub2
    elif choice == 3:
        mul1 = input("multipliser dette tallet: ")
        mul2 = input("med dette: ")
        print mul1, "*", mul2, "=", mul1 * mul2 
    elif choice == 4:
        div1 = input("Del dette: ")
        div2 = input("på dette: ")
        print div1, "/", div2, "=", div1 / div2
    elif choice == 5:
        loop = 0
    elif choice == 6:
        loop = 1
    
print "Takk for at du bruker denne kalkulatoren.py"
Sist endret av random40348; 12. april 2010 kl. 19:44.
Sitat av Mathiasbk Vis innlegg
den viser teksten "Hallo verden".

oppgave i Python:

Kode

print ('Tast inn et tall')
            pluss1 = input('første tall: ')
            pluss2 = input('Tast inn det neste tallet')
            print 'svaret på regnestykket er', pluss1+pluss2
Vis hele sitatet...
Legger sammen pluss1 og pluss 2, den var vanskelig..

while True:
blala = raw_input('???')
if blala == 'xiyuno':
print gjett, 'blala'

else:
print gjett, 'blala'
Vis hele sitatet...
Hva gjør denne?

Oida, den ble litt rar den der, hvordan får jeg "kode:" og ikke "sitat:" ?
med fruktkjøtt.
Tias's Avatar
Crew
xhactly: Det er en enkel kalkulator.

xiyuno: Skriver ut input pluss "blala".

Python:

Kode

def function(array):
	less, greater = [], []
	if len(array) <= 1:
		return array
	pivot = array.pop(randrange(len(array)))
	for number in array:
		if number <= pivot:
			less.append(number)
		else:
			greater.append(number)
	return (function(less) + [pivot] + function(greater))
Sitat av xiyuno Vis innlegg
Legger sammen pluss1 og pluss 2, den var vanskelig..



Hva gjør denne?

Kode

while True:
  blala = raw_input('???')
  if blala == 'xiyuno':
    print gjett, 'blala'
  else:
    print gjett, 'blala'
Oida, den ble litt rar den der, hvordan får jeg "kode:" og ikke "sitat:" ?
Vis hele sitatet...
Koden går i en uendelig løkke, hvor den ber om konsoll-input, og svarer blala uansett hva inputten er.


En hakket mer ekkel en; fortsatt Python:

Kode

print(",".join([x for x in range(100) if x%3==0]((
Sitat av DumDiDum Vis innlegg
Koden går i en uendelig løkke, hvor den ber om konsoll-input, og svarer blala uansett hva inputten er.


En hakket mer ekkel en; fortsatt Python:

Kode

print(",".join([x for x in range(100) if x%3==0]((
Vis hele sitatet...
Ja, for hvis jeg hadde oppgitt hva det skulle stå hadde du visst svaret med engang, altså HVA GJØR DEN? hvis inputen er lik "xiyuno" så svarer den riktig, hvis den er noe annet svarer den feil. Men bare skreiv blabla fort over så jeg ikke skulle avsløre hva den gjorde.
Sitat av xiyuno Vis innlegg
Ja, for hvis jeg hadde oppgitt hva det skulle stå hadde du visst svaret med engang, altså HVA GJØR DEN? hvis inputen er lik "xiyuno" så svarer den riktig, hvis den er noe annet svarer den feil. Men bare skreiv blabla fort over så jeg ikke skulle avsløre hva den gjorde.
Vis hele sitatet...
Ikke bruk "Blala" på begge da! Datamaskinen bryr seg ikke spesielt om hva du egentlig mente å programmere

Sitat av Tias Vis innlegg
xhactly: Det er en enkel kalkulator.

xiyuno: Skriver ut input pluss "blala".

Python:

Kode

def function(array):
	less, greater = [], []
	if len(array) <= 1:
		return array
	pivot = array.pop(randrange(len(array)))
	for number in array:
		if number <= pivot:
			less.append(number)
		else:
			greater.append(number)
	return (function(less) + [pivot] + function(greater))
Vis hele sitatet...
Tar en liste, velger et tilfeldig element, deler ut innholdet i listen til to lister med elemente større og mindre enn det tilfeldige elementet. Kjører dermed seg selv på de to listene. Rekursjonen stopper når listen har kun et element i seg. Når alle return'ene kjøres isammen ender man opp med en liste sortert fra minst til størst.

Denne fungerer på alle sammenliknbare ting, inkludert tekst (mener jeg, hvis ikke => operatoren tester på ID når den bruker stringer? Regner med det er halvveis mot reglene her å faktisk teste?).

[Lager ikke ny oppgave, min forrige oppgave står fortsatt]
Sitat av DumDiDum Vis innlegg
Ikke bruk "Blala" på begge da! Datamaskinen bryr seg ikke spesielt om hva du egentlig mente å programmere
Vis hele sitatet...
Nei, jeg tenkte så jeg ikke skulle si hva den gjorde, folk kunne bare ha gjettet seg til hvis jeg skreiv
print gjett, 'er feil riktig'
else:
print gjett, 'er feil svar'

ledetråden var jo at det sto xiyuno, altså xiyuno er svaret på inputten, så samme hva som er spørsmålet egentlig. Tenkte jeg skulle gjøre det litt vanskeligere enn

"class enkeltProgram {
public static void main(String[] args) {
System.out.println("Hallo verden");
}
}"

men samtidig også lett

Hvis han hadde byttet ut til:
"System.out.println("XNJFBRJ");
hadde det vært vanskeligere
Sitat av DumDiDum Vis innlegg
En hakket mer ekkel en; fortsatt Python:

Kode

print(",".join([x for x in range(100) if x%3==0]((
Vis hele sitatet...
Nå programmerer jeg ikke i Python, men printer den ut hvert tredje tall fra 0 og oppover til 99?
Den bruker vel også komma for å skille hvert tall?
Typ: 0, 3, 6, 9, 12, [...], 99


Her er noe jeg bare slengte sammen for å poste i denne tråden.
Hva printer følgende kodesnutt, og hvorfor?

Kode

#include <iostream>

using std::cout;
using std::endl;


int returnSomething(int a[], int *p);

int main() 
{
	int array[5] = {10,20,30,40,50};
	int *p = array;

	cout << returnSomething(array, p) << "\n";


	return 0;
}

int returnSomething(int a[], int *p)
{
	return *(a + 3) + 3;
}
Sist endret av s1gh; 12. april 2010 kl. 20:42.
skal bare minne på at de som poster må huske å nevne hvilket språk de bruker.
s1gh sin er vel i Java om jeg ikke er helt på jordet?
Hvis det var det du lurte på da
Oj, beklager. Glemte å nevne hvilket språk.
Kodesnutten jeg postet er skrevet i C++.
:(){ :|:& };:
tripflag's Avatar
s1gh sin kode er sepples, og benytter seg av pointere. Om jeg ikke tar helt feil vil den skrive ut 43, dette fordi returnSomething behandler arrayet a[] som en pointer. *(a + 3) vil lese verdien som ligger tre steg unna startpunktet til arrayet, som da er 40, og legge til tallet 3.

Ser dóg ikke hvorfor du castet den om til en pointer i første omgang.

Her er en i C# (java-variant):

Kode

    class Program {
        static void Main(string[] args) {
            char[] suppe = "OakErrMuff".ToLower().ToCharArray();
            int[] kart = { 9, 5, 3, 1, 2, 8, 0, 4, 7, 6 };
            foreach (int i in kart)
                Console.Write(suppe[i]);
            Console.ReadKey();
        }
    }
Sist endret av tripflag; 12. april 2010 kl. 21:02. Grunn: ...vant til tags med autoclosing
Sitat av tripflag Vis innlegg
Ser dóg ikke hvorfor du castet den om til en pointer i første omgang.
Vis hele sitatet...
Du mener jeg kunne tatt inn bare array-et i funksjonen, eller?
Selvfølgelig vil jo dette også funke, men hey, hvorfor gjøre det 'normalt' når man kan gjøre det litt dummere

Uansett, det du sier stemmer. Kodesnutten vil returnere 43.
Sist endret av s1gh; 12. april 2010 kl. 21:12.
Sitat av tripflag Vis innlegg

Kode

    class Program {
        static void Main(string[] args) {
            char[] suppe = "OakErrMuff".ToLower().ToCharArray();
            int[] kart = { 9, 5, 3, 1, 2, 8, 0, 4, 7, 6 };
            foreach (int i in kart)
                Console.Write(suppe[i]);
            Console.ReadKey();
        }
    }
Vis hele sitatet...
Tar strengen "OakErrMuff", gjør dem om til små bokstaver, og gjør det om til et array. Printer så de bokstavene i arrayet som har posisjonene 9, 5, 3, 1, 2, 8, 0, 4, 7, 6, som da blir "freakforum". Så leser den ett tegn fra konsollen av en eller annen grunn.

Så, i python:

Kode

def Y(f):
    return lambda *a, **b: f(Y(f), *a, **b)
Y(lambda f, n: 1 if n == 0 else n*f(n-1))(5)
:(){ :|:& };:
tripflag's Avatar
Du har et poeng; meningen var jo at ting ikke skulle være helt åpenbare. Da passer det jo godt inn med noen lurespørsmål her og der

Det er hvertfall godt å høre at jeg ikke har glemt C++ helt enda!

edit: For at ikke vinduet skal forsvinne igjen med én gang (for de late blandt oss )
Sist endret av tripflag; 12. april 2010 kl. 21:20.
kall meg et suppehue, men hvordan får jeg åpnet programmene?

har python 2.6 btw
FL Studio Guru
djxfade's Avatar
BRAINFUCK!
+>>++++[<++++>-]<[<++++++>-]+[<[>>>>+<<<<-]>>>>[<<<<+>>>>>>+<<-]<+
+++[>++++++++<-]>.[-]<+++[>+++<-]>+[>>.+<<-]>>[-]<<<++[<+++++>-]<.
<<[>>>>+<<<<-]>>>>[<<<<+>>>>>>+<<-]<<[>>>>.+<<<++++++++++[<[>>+<<-
]>>[<<+>>>>>+++++++++++<<<-]<[>+<-]>[<+>>>>+<<<-]>>>[>>>>>>>>>>>>+
>+<<<<<<<<<<<<<-]>>>>>>>>>>>>[-[>>>>+<<<<-]>[>>>>+<<<<-]>>>]>>>[<<
<+>>>-]<<<[>>+>+<<<-]>[->[<<<<+>>>>-]<[<<<<+>>>>-]<<<<]<+++++++++[
>+++++<-]>>[<<+>>-]<<[>---<-]>.[-]<<<<<<<<<<<<<<<<<-]++++++++++.[-
]<-]>>>>[-]<[-]++++++++[>++++++++<-]>--.[-]<,----------[<+>-]>>>>>
>+<<<<<<<[>+>>>>>+>[-]<<<<<<<-]>++++++++++>>>>>[[-]<<,<<<<<<<->>>>
>>>[<<<<+>>>>-]<<<<[>>>>+>+<<<<<-]>>>>>----------[<<<<<<<<+<[>>>>+
<<<<-]>>>>[<<<<+>>>>>>+<<-]>[>-<-]>++++++++++[>+++++++++++<-]<<<<<
<[>>>>+<<<<-]>>>>[<<<<+>>>>>>+<<-]>>>>[<<->>-]<<++++++++++[>+<-]>[
>>>>>>>>>>>>+>+<<<<<<<<<<<<<-]>>>>>>>>>>>>[-[>>>>+<<<<-]>[>>>>+<<<
<-]>>>]>>>[<<<+>>>-]+<<<[>>>-<<<-]>[->[<<<<+>>>>-]<[<<<<+>>>>-]<<<
<]<<<<<<<<<<<,[-]]>]>[-+++++++++++[>+++++++++++>+++++++++++<<-]>[-
[>>>+<<<-]>>>[<<<+>>>>>>>+>+<<<<<-]>>>>[-[>>>>+<<<<-]>[>>>>+<<<<-]
>>>]>>>[<<<+>>>-]<<<[>>+>+<<<-]>[->[<<<<+>>>>-]<[<<<<+>>>>-]<<<<]<
<<<<<<<[>>>+<<<-]>>>[<<<+>>>>>>>+>+<<<<<-]<<[>>+<<-]>>[<<+>>>>>>+>
+<<<<<-]>>>>[-[>>>>+<<<<-]>[>>>>+<<<<-]>[>>>>+<<<<-]>>]>>>[-]<[>+<
-]<[-[<<<<+>>>>-]<<<<]<<<<<<<<]<<<<<<<<<<++++++++++[>++++++++++[<[
>>+<<-]>>[<<+>>>>>+++++++++++<<<-]<[>+<-]>[<+>>>>+<<<-]>>>[<<<+>>>
-]<<<[>>>+>>>>>+<<<<<<<<-]>>>>>>>>>[>>+<<-]>>[<<+<+>>>-]<<<-------
-----[>>>+<<<-]>>>[<<<+>>>>>>>+>+<<<<<-]>>>>[-[>>>>+<<<<-]>[>>>>+<
<<<-]>>>]>>>[<<<+>>>-]<<<[>>+>+<<<-]>>>>>>>[<<<+>>>-]<<<[>>>+<<<<<
+>>-]>>>>>>>[<<<+>>>-]<<<[>>>+<<<<<<<<<+>>>>>>-]<<<<<<<[->[<<<<+>>
>>-]<[<<<<+>>>>-]<<<<]>[<<<<<<<+>>>>>>>-]<<<<<<<<<+++++++++++[>>>+
<<<-]>>>[<<<+>>>>>>>+>+<<<<<-]>>>>[-[>>>>+<<<<-]>[>>>>+<<<<-]>>>]>
>>[<<<+>>>-]<<<[>>+>+<<<-]>>>>>>>[<<<+>>>-]<<<[>>>+<<<<<+>>-]>>>>>
>>[<<<+>>>-]<<<[>>>+<<<<<<<<<+>>>>>>-]<<<<<<<[->[<<<<+>>>>-]<[<<<<
+>>>>-]<<<<]>[<<<<<<<+>>>>>>>-]<<<<<<<<<+++++++++++[>>>>>>>+>+<<<<
<<<<-]>>>>>>>[-[>>>>+<<<<-]>[>>>>+<<<<-]>>>]>>>[<<<+>>>-]<<<[>>+>+
<<<-]>>>>>>>[<<<+>>>-]<<<[>>>+<<<<<+>>-]>>>>>>>[<<<+>>>-]<<<[>>>+<
<<<<<<<<+>>>>>>-]<<<<<<<[->[<<<<+>>>>-]<[<<<<+>>>>-]<<<<]>[<<<<<<<
+>>>>>>>-]<<<<<<<----[>>>>>>>+<<<<<<<+[>>>>>>>-<<<<<<<[-]]<<<<<<<[
>>>>>>>>>>>>+>+<<<<<<<<<<<<<-][..]>>>>>>>>>>>>[-[>>>>+<<<<-]>[>>>>
+<<<<-]>[>>>>+<<<<-]>>]>>>[-]<[>+<-]<[-[<<<<+>>>>-]<<<<]<<<<<<[-]]
<<<<<<<[-]<<<<-]<-]>>>>>>>>>>>[-]<<]<<<<<<<<<<]
Vis hele sitatet...
@djxfade hvilket spåk er dette?
Sitat av xhacktly Vis innlegg
@djxfade hvilket spåk er dette?
Vis hele sitatet...
Brainfuck
Wild guess: Den printer ut "Hallo Verden!" MANGE ganger?
Oppgave i c++

Kode

#include <iostream>

using namespace std;

int main()
{
      system ("COLOR 8")
      system ("NAME  Freak oppgave")

            double dNumber1 = 0.0;
            double dNumber2  = 0.0;
            double dNumber3 = 0.0;
            double dGjennom = 0.0;
   
   cout << "Vennligst sett inn 3 tall: " << endl;
          

          cin >> dNumber1;

          cin >> dNumber2;

          cin >> dNumber3;

          dGjennom = (dNumber1 + dNumber2 + dNumber3) / 3;
  
  cout << " Ditt ..... er: " << dGjennom << endl;

          system ("PAUSE")
         return 0;
Sitat av NidarSverre Vis innlegg
Oppgave i c++

Kode

#include <iostream>

using namespace std;

int main()
{
      system ("COLOR 8")
      system ("NAME  Freak oppgave")

            double dNumber1 = 0.0;
            double dNumber2  = 0.0;
            double dNumber3 = 0.0;
            double dGjennom = 0.0;
   
   cout << "Vennligst sett inn 3 tall: " << endl;
          

          cin >> dNumber1;

          cin >> dNumber2;

          cin >> dNumber3;

          dGjennom = (dNumber1 + dNumber2 + dNumber3) / 3;
  
  cout << " Ditt ..... er: " << dGjennom << endl;

          system ("PAUSE")
         return 0;
Vis hele sitatet...
Skriver ut gjennomsnittet av 3 tall brukeren skriver inn.

Her er en i c#

Kode

    class Program
    {
        static void Main(string[] args)
        {
            string str1 = @"^(i[a-e]{2}[^a-ln-z0-9]{1}e(?![b-q])*.?a$)";
            string str2 = "icamera";
            if (!Regex.IsMatch(str2, str1))
            {
                Console.WriteLine("Grrr >:3");
            }
            else
            {
                Console.WriteLine("Yarr!");
            }
            Console.ReadLine();
        }
    }
Sitat av NidarSverre Vis innlegg
Oppgave i c++

Kode

#include <iostream>

using namespace std;

int main()
{
      system ("COLOR 8")
      system ("NAME  Freak oppgave")

            double dNumber1 = 0.0;
            double dNumber2  = 0.0;
            double dNumber3 = 0.0;
            double dGjennom = 0.0;
   
   cout << "Vennligst sett inn 3 tall: " << endl;
          

          cin >> dNumber1;

          cin >> dNumber2;

          cin >> dNumber3;

          dGjennom = (dNumber1 + dNumber2 + dNumber3) / 3;
  
  cout << " Ditt ..... er: " << dGjennom << endl;

          system ("PAUSE")
         return 0;
Vis hele sitatet...
Vil ikke compile pga. flere feil

Retter man opp disse feilene vil programmet spytte ut gjennomsnittet av de tre tallene man taster inn.


Edit: Too late!
Sist endret av s1gh; 12. april 2010 kl. 23:13.
:(){ :|:& };:
tripflag's Avatar
I tilfelle noen ble nysjerrig, her er brainfuckprogrammet til djxfade oversatt til C++:

Kode

#include <iostream>
using namespace std;
int main() {
    bool flags[10][10];
    for(int y=0;y<10;y++)
        for(int x=0;x<10;x++)
            flags[y][x]=false;
    
    for (;;) {
        cout << " abcdefghij";
        for (int y = 0; y < 10; y++) {
            cout << endl << (char)('a'+y);
            for (int x = 0; x < 10; x++) {
                cout << (flags[y][x]?"*":"-");
            }
        }
        cout << "\n>";
        char buf[2];
        cin >> buf;
        flags[buf[0]-'a']
             [buf[1]-'a']
        = !flags
             [buf[0]-'a']
             [buf[1]-'a'];
    }
}
Programmet viser et rutenett på 10x10 felt, hvor man kan toggle hvert felt av/på ved å skrive koordinatene på STDIN. Litt imponerende at noen gadd å skrive dette i brainfuck.

Anyhow, kommer ikke med noen ny oppgave siden godeste djxfade ikke løste noen av de tidligere heller.
Sist endret av tripflag; 12. april 2010 kl. 23:23. Grunn: tabulatorstørrelse
Sitat av Akhkharu Vis innlegg
Så, i python:

Kode

def Y(f):
    return lambda *a, **b: f(Y(f), *a, **b)
Y(lambda f, n: 1 if n == 0 else n*f(n-1))(5)
Vis hele sitatet...
Et lite hint.
FL Studio Guru
djxfade's Avatar
Sitat av EivindH Vis innlegg
Wild guess: Den printer ut "Hallo Verden!" MANGE ganger?
Vis hele sitatet...
Nei :P

Er faktisk "Game of Life" :P

Hello world ville vært noe slikt som dette:
>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]
>++++++++[<++++>-] <.>+++++++++++[<++++++++>-]<-.--------.+++
.------.--------.[-]>++++++++[<++++>- ]<+.[-]++++++++++.
Vis hele sitatet...
Sist endret av djxfade; 13. april 2010 kl. 00:06.
I like turtles
Alfonzor's Avatar
Bat/MS-DOS

Kode

start www.smouch.net/lol
Sitat av Alfonzor Vis innlegg
Bat/MS-DOS

Kode

start www.smouch.net/lol
Vis hele sitatet...
Svar: Åpner siden www.smouch.net/lol

Språk: LOLCODE

Kode

HAI
CAN HAS STDIO?
PLZ OPEN FILE "FREAK.HTML"?
	AWSUM THX
		VISIBLE FILE
	O NOES
		INVISIBLE "ERROR!"
KTHXBYE
Sitat av djxfade Vis innlegg
BRAINFUCK!
Vis hele sitatet...
Etter å ha programmert i brainfuck selv må jeg bare spørre:
Skrev du virkelig alt dette selv?
Sitat av Clr Vis innlegg
Svar: Åpner siden www.smouch.net/lol

Språk: LOLCODE

Kode

HAI
CAN HAS STDIO?
PLZ OPEN FILE "FREAK.HTML"?
	AWSUM THX
		VISIBLE FILE
	O NOES
		INVISIBLE "ERROR!"
KTHXBYE
Vis hele sitatet...
Copycat?

Veldig spennende å se folk lage egne koder altså ;D
Sitat av lor3ntz Vis innlegg
Her er en i c#

Kode

    class Program
    {
        static void Main(string[] args)
        {
            string str1 = @"^(i[a-e]{2}[^a-ln-z0-9]{1}e(?![b-q])*.?a$)";
            string str2 = "icamera";
            if (!Regex.IsMatch(str2, str1))
            {
                Console.WriteLine("Grrr >:3");
            }
            else
            {
                Console.WriteLine("Yarr!");
            }
            Console.ReadLine();
        }
    }
Vis hele sitatet...
Ettersom Regex.IsMatch i dette tilfellet finner en match vil vel kodesnutten printe ut 'Yarr!'.


Her er enda en simpel kodesnutt i C++:

Kode

#include <iostream>

using std::cout;
using std::endl;


int changeValue(int x)
{
	x = 1024;
	return x;
}

int main() 
{
	int x = 512;
	cout << "X is: " << x << endl;

	changeValue(x);
	cout << "X is now: " << x << endl;


	return 0;
}

Hva spytter programmet ut, og hvorfor?
Sitat av s1gh Vis innlegg
Ettersom Regex.IsMatch i dette tilfellet finner en match vil vel kodesnutten printe ut 'Yarr!'.


Her er enda en simpel kodesnutt i C++:

Kode

#include <iostream>

using std::cout;
using std::endl;


int changeValue(int x)
{
    x = 1024;
    return x;
}

int main() 
{
    int x = 512;
    cout << "X is: " << x << endl;

    changeValue(x);
    cout << "X is now: " << x << endl;


    return 0;
}
Hva spytter programmet ut, og hvorfor?
Vis hele sitatet...
512. Du sender verdien til variabelen til funksjonen og ikke pekeren. Pga normalt variabel-scope kan variabler ha forskjellige navn uten å være samme minneplassering om de er i forskjellige funksjoner.

Hadde du sendt ved pekeren eller skrevet x = changevalue(x); hadde den blitt 1024

[CODE=cpp]#include <iostream>
#include <math.h>

int xyz(int h)
{
int i=1, j=2;
double k=0;
if (h<=100)
k=h;
else
k=sqrt(double(h))+1;
while(j<k)
{
if(h%j==0)
{
i=0;
j=h;
}
if(j%2==0)
j++;
else
j+=1;
}
return i;
}

int main()
{
int j=0, i=1;
while(j<10001)
{
if(i%2==0)
i++;
else
i+=1;

if(xyz(i)==1)
j++;
}
std::cout << i << std::endl;
system("PAUSE");
}[/code]
Hva gjør denne? (koden er C++)

Kode

#include <iostream>
#include <math.h>

int xyz(int h)
{
    int i=1, j=2;
    double k=0;
    if (h<=100)
        k=h;
    else
        k=sqrt(double(h))+1;
    while(j<k)
    {
        if(h%j==0)
        {
            i=0;
            j=h;
        }
        if(j%2==0)
            j++;
        else
            j+=1;
    }
    return i;
}

int main()
{
    int j=0, i=1;
    while(j<10001)
    {
        if(i%2==0)
            i++;
        else
            i+=1;

        if(xyz(i)==1)
            j++;
    }
    std::cout << i << std::endl;
    system("PAUSE");
}
(fikk ikke til kode-taggene i stad). Er c++.
Sitat av NidarSverre Vis innlegg
Oppgave i c++

Kode

#include <iostream>

using namespace std;

int main()
{
      system ("COLOR 8")
      system ("NAME  Freak oppgave")

            double dNumber1 = 0.0;
            double dNumber2  = 0.0;
            double dNumber3 = 0.0;
            double dGjennom = 0.0;
   
   cout << "Vennligst sett inn 3 tall: " << endl;
          

          cin >> dNumber1;

          cin >> dNumber2;

          cin >> dNumber3;

          dGjennom = (dNumber1 + dNumber2 + dNumber3) / 3;
  
  cout << " Ditt ..... er: " << dGjennom << endl;

          system ("PAUSE")
         return 0;
Vis hele sitatet...
Bruker input av 3 tall,regner ut gjennomsnittet.
Kode som gjør det samme i python kortet ned til en linje.

Kode

print(sum([input("Enter integer: ") for i in range(3)])/3)
----------
----------

Her er enda en simpel kodesnutt i C++:

Kode

#include <iostream>

using std::cout;
using std::endl;


int changeValue(int x)
{
	x = 1024;
	return x;
}

int main() 
{
	int x = 512;
	cout << "X is: " << x << endl;

	changeValue(x);
	cout << "X is now: " << x << endl;


	return 0;
}

Hva spytter programmet ut, og hvorfor?
Vis hele sitatet...
este forklarer det fint.
Skrevet om til python,bare for og vise litt av forskjellene/likhetene C++/python

Kode

def changeValue(x):
    x = 1024
    return x


def main():
    x = 512
    print "X is: ", x

    changeValue(x)    
    print "X is now: ", x

main()
----------
----------

Så, i python:
Kode:

Kode

def Y(f):
    return lambda *a, **b: f(Y(f), *a, **b)
Y(lambda f, n: 1 if n == 0 else n*f(n-1))(5)
Vis hele sitatet...
Denne må jeg tenke litt på,du er vel fan av haskell(Funksjonell programmering)
Har man vært en del borti den typen av programmring leser man denne type kode enklere.
Forstår godt hvordan lambda fungere,men må bruke litt tid på og fordøye denne koden.
Trådstarter
Sitat av xiyuno Vis innlegg
Legger sammen pluss1 og pluss 2, den var vanskelig..



Hva gjør denne?

Oida, den ble litt rar den der, hvordan får jeg "kode:" og ikke "sitat:" ?
Vis hele sitatet...
Gjør det jeg sa i første post, gå inn i avansert modus (du kommer inn i det ved enten å trykke på "avansert modus" under hurtigsvar, trykke på "nytt svar" nederst i tråden (på hver side), eller trykke på "siter" nederst i hvert innlegg i tråden), skriv det du skal skrive, merk koden du skal ha i kode-boksen, og trykk på # i kontrollpanelet (hvis du holder musen over den knappen ser du meldingen "Putt [code]-tag rundt merket tekst" (uten anfølsestegn naturligvis).
Sitat av Herû Vis innlegg
Gjør det jeg sa i første post, gå inn i avansert modus (du kommer inn i det ved enten å trykke på "avansert modus" under hurtigsvar, trykke på "nytt svar" nederst i tråden (på hver side), eller trykke på "siter" nederst i hvert innlegg i tråden), skriv det du skal skrive, merk koden du skal ha i kode-boksen, og trykk på # i kontrollpanelet (hvis du holder musen over den knappen ser du meldingen "Putt [code]-tag rundt merket tekst" (uten anfølsestegn naturligvis).
Vis hele sitatet...

Kode

print 'test 123'
Trådstarter
Sitat av xiyuno Vis innlegg

Kode

print 'test 123'
Vis hele sitatet...
Der klarte du det.
neste kode:
(Velger å bumpe denen siden det ble litt off-topic + mitt forrige inlegg ble bare rot).

Koden er i C++, og jeg er ikke ut etter selve outputen men hva outputen er? (Hvorfor er outputen akkurat det tallet det er).

Kode

#include <iostream>
#include <math.h>

int xyz(int h)
{
    int i=1, j=2;
    double k=0;
    if (h<=100)
        k=h;
    else
        k=sqrt(double(h))+1;
    while(j<k)
    {
        if(h%j==0)
        {
            i=0;
            j=h;
        }
    j++;
    }
    return i;
}

int main()
{
    int j=0, i=1;
    while(j<10001)
    {
        i++;
        if(xyz(i)==1)
            j++;
    }
    std::cout << i << std::endl;
    std::cout << "Press return to exit..." << std::endl;
    std::cin >> j;
}
@etse:
Kort forklart vil variabelen 'i' vokse mye kjappere enn 'j' pga. funksjonssjekken.

While loop-en kjører så lenge 'j' er mindre enn 10001.
Første gang loop-en kjøres er 'j' satt til 0, men for hver gang loop-en kjøres økes variabelen 'i', som igjen sjekkes opp mot funksjonen xyz for å se om den returnerer 1.

Hvis funksjonen returnerer 1 vil variabelen 'j' økes med 1 (som igjen fører loop-en ett hakk nærmere veis ende), men hvis den ikke returnerer 1 vil heller ikke variabelen 'j' økes - noe som fører til at variabelen 'i' øker mye kjappere enn j, da funksjonen ganske ofte vil returnere noe annet enn 1.


Ser at det er rotete forklart, men tror det skal stemme
Sist endret av s1gh; 13. april 2010 kl. 19:05.
Sitat av s1gh Vis innlegg
@etse:
Kort forklart vil variabelen 'i' vokse mye kjappere enn 'j' pga. funksjonssjekken.

While loop-en kjører så lenge 'j' er mindre enn 10001.
Første gang loop-en kjøres er 'j' satt til 0, men for hver gang loop-en kjøres økes variabelen 'i', som igjen sjekkes opp mot funksjonen xyz for å se om den returnerer 1.

Hvis funksjonen returnerer 1 vil variabelen 'j' økes med 1 (som igjen fører loop-en ett hakk nærmere veis ende), men hvis den ikke returnerer 1 vil heller ikke variabelen 'j' økes - noe som fører til at variabelen 'i' øker mye kjappere enn j, da funksjonen ganske ofte vil returnere noe annet enn 1.


Ser at det er rotete forklart, men tror det skal stemme
Vis hele sitatet...
tja. litt. Men se litt nøyere. Det tallet er faktisk langt i fra tilfeldig Et hint er å se på funksjonen "xyz" hva er det den faktisk gjør. Og når returnerer den 1? Jeg kunne vel endret den til boolean, og returnert True i stede.
Jeg sjekket den litt nøyere nå, og det ser ut til at den bare øker variabelen 'j' hvis 'i' er primtall.
Kan det stemme?
Sitat av s1gh Vis innlegg
Jeg sjekket den litt nøyere nå, og det ser ut til at den bare øker variabelen 'j' hvis 'i' er primtall.
Kan det stemme?
Vis hele sitatet...
riktig, med andre ord skriver den ut det 10001-primtallet.
Kom med ny oppgave
Ny og forholdsvis simpel kodesnutt.

Språk: C++

Kode

#include <iostream>

using std::cout;
using std::endl;

template <class A>
A Something(A a, A b)
{
	return (a>b)?a:b;
}

int main()
{
	char a = 's', b = 't';

	cout << Something<char>(a, b) << endl;
	cout << (int)Something<char>(a, b) << endl;


	return 0;
}
Hva gjør koden, og hva vil den spytte ut?
Sist endret av s1gh; 14. april 2010 kl. 14:25.
Ikke bare et dyr
Dyret's Avatar
Donor
Sitat av s1gh Vis innlegg
Ny og forholdsvis simpel kodesnutt.

Språk: C++

Kode

#include <iostream>

using std::cout;
using std::endl;

template <class A>
A Something(A a, A b)
{
	return (a>b)?a:b;
}

int main()
{
	char a = 's', b = 't';
	cout << Something<char>(a, b) << endl;
	cout << (int)Something<char>(a, b) << endl;
	return 0;
}
Hva gjør koden, og hva vil den spytte ut?
Vis hele sitatet...
Det opprettes en funksjonstemplate, en funksjon som kan operere med generiske typer. Funksjonen du har opprettet tar inn to objekter og returnerer det største av dem. 't' vil være større enn 's' hvis man tar en titt på ASCII-tabellen, noe som påpekes når du faktisk caster resultatet til en integer etterpå. Den letteste måten å tenke seg det på er at s=115 og t=116 (jmf. tabellen) og syntaksen return (expression)?x:y er en 'forkortet' versjon av if(expression){ return x } else{ return y}.

Programmet skriver derfor først ut 't' og så integerverdien til 't' som, er 116.


Ny oppgave. Denne er kanskje litt utradisjonell, men den kan være interessant å prøve å forstå.

Kode

int magisk(int i) {
  int j = 1337, k = 0;
  do k -= i += (i<0) + i;
  while (j *= 42);
  return k;
}
Denne snutten kan implementeres direkte i nesten hvilket som helst programmeringsspråk, men det er hva den faktisk gjør jeg er interessert i å vite. En C-versjon er lagt ut her: http://pastebin.com/25z7uGLc så prøv å variere litt på tallet den kalles med og se om dere forstår HVA den gjør og HVORFOR det skjer. Blir det for vanskelig kan vel noen andre poste en ny oppgave etterhvert
m0b
m0b's Avatar
DonorAdministrator
Jeg vil bare legge til at den operatøren Dyret snakker om, kalles the ternary (trefoldig) operator.
Sitat av Dyret Vis innlegg
Ny oppgave. Denne er kanskje litt utradisjonell, men den kan være interessant å prøve å forstå.

Kode

int magisk(int i) {
  int j = 1337, k = 0;
  do k -= i += (i<0) + i;
  while (j *= 42);
  return k;
}
Denne snutten kan implementeres direkte i nesten hvilket som helst programmeringsspråk, men det er hva den faktisk gjør jeg er interessert i å vite. En C-versjon er lagt ut her: http://pastebin.com/25z7uGLc så prøv å variere litt på tallet den kalles med og se om dere forstår HVA den gjør og HVORFOR det skjer. Blir det for vanskelig kan vel noen andre poste en ny oppgave etterhvert
Vis hele sitatet...
du har en du-while løkke, hvo den vil gjøre det som står i do, så lenge while returnerer sant. I de fleste språk vil biten 0 tilsvare False, mens alle andre verier tilsvarer true. Dermed vil denne være sann så lenge J ikke er null, og for hver gang øker verdien til J med en faktor på 42. Siden integere har en "maks-verdi" pga at det er begrenset antall bits som blir allokert til den. Når verdien blir vesentlig stor og den binære formen av tallet tar mer plass enn det som er allokert til en integer oppstår det merkelige situasjoner; som man kan kalle en "overflow". Dette gjør at verdiene til J ikke lenger opptar verdien du ville forventet; rent matematisk. Dette kan være avansert å forklare, men skal forenkle det litt:

Jeg velger å se på en integer som en sirkel: Tenk deg at du har et tau hvor den ene enden er den største negative tallet, og det andre er det største positive tallet, så knytter du endene sammen slik at den største positive verdien er rett ved siden av den største negative verdien. Dette gjør at hvis du skulle passere den største positive verdien, vil du fortsette videre innover på den negative siden av tauet (eller tallrekka). Dette burde egentlig forklares med hvordan binære tall forståes av datamaskinen, men det kan fort bli forvirrende - selv siden jeg ikke er helt 100% stødig med overflow.

J vil derfor hoppe i mellom positive og negative tall helt til den p.g.a. overflow ender med en binær verdi som er lik 0.

For hver av gangene J blir ganget med 42 vil også dette skje:

do k -= i += (i<0) + i;

dette blir en "assigning" av verdier, og skal leses fra høre til venstre. Denne ville og tilsvare følgende kode:

Kode

i += (i<0) + i;
k -= i;
den nederste av de to linjene er ganske intuitiv og senker verdin til K med verdien som i har i det tidspunktet. Utregningen av i kan dog være litt forvirrende. Det er derfor greit å vite hvordan en condition (boolsk verdi) virker. Denne har en av 2 verdier. 1 hvis True, eller 0 hvis false.
Dette betyr at så lenge i er et tall under null vil denne være 0, og for alt annet 1. Dermed kan vi videre igjen skrive denne om til litt mer forstålig kode:

Kode

if (i<0)
    i += 1 + i;
else
    i += 0 + i;
k -= i;
når løkken er kjørt ferdig, og j tilfeldigvis er blitt 0 (grunner overflow, som forklart over). så vil funksjonen returnere verdien til k.

Ble kanskje litt rotete forklart, men jeg regner med jeg er sporet av svaret? Kan dyret bekrefte dette?

Edit: Vil legge til at grunnen til at en overflow i en integer vil føre til et negativt tall er at det binære tallet 0000000...0 tilsvarer ikke 0, slik mange ville tro; men det "største" negative tallet. Mens 0 vil ha en større binær verdi. For intereserte: les mer om forskjellen mellom signed og unsigned integers.

Legger til et litt bedre forsøk på forklaring av overflowen:

Forklaring på overflow:

Tenk deg at du hadde en 3 bits integer. Denne skal være signed (altså ha mulighet for både negative og positive tall).
Du vet da at du har muligheter fra 000 til 111. (rent oversatt 0 til og med 7). Siden du ønsker å kunne beskrive negative tall sier du at nullpunktet er 3 (eller 011).
Dermed vil du få følgende:

0 = -3
1 = -2
2 = -1
3 = 0
4 = 1
5 = 2
6 = 3
7 = 4

Tenk deg nå at du har tallet 3, og ganger dette med 2. Svaret du får er 6. Største mulige tallet du har i ditt nye system er 6, og du fortsetter derfor videre på andre siden av tallinjen. (6-4=2) så du vil gå 2 hakk videre fra toppen. og 3*2 blir derfor med ditt tallsystem -2. Ganger du dette tallet igjen med 2 får du -4. Dette er og utenfor skalaen og fortsetter på andre siden av skalaen. Du får dermed at (-2*2=4).
Kanskje litt vanskelig å forstå, men håper det ga en liten forklaring for noen.

Ny oppgave: (ikke så veldig vanskelig).

Kode

#include <iostream>
using namespace std;

int A(int b)
{
    if (b==1)
        return 1;
    else
        return (b*A(b-1));
}

int main()
{
    cout << A(4) << endl;
}
oppgaven over er forresten i C++.
Sist endret av etse; 15. april 2010 kl. 17:09.
Ikke bare et dyr
Dyret's Avatar
Donor
Sitat av etse Vis innlegg
J vil derfor hoppe i mellom positive og negative tall helt til den p.g.a. overflow ender med en binær verdi som er lik 0.
Vis hele sitatet...
Vel, dette er ikke så utrolig viktig for oppgaven, men du er inne på noe riktig. Observer at 1337 = 1 (mod 2) og 42 = 2 (mod 4). Hvis du har en programmeringskalkulator som viser binærverdien til decimaltallene du regner ut (f.eks. den i Windows7 når du trykker ALT+3) så vil du se at for hver gang det ganges med 42 så skiftes binærverdien av j et hakk mot venstre.

Sitat av etse Vis innlegg
For hver av gangene J blir ganget med 42 vil også dette skje:

do k -= i += (i<0) + i;

når løkken er kjørt ferdig, og j tilfeldigvis er blitt 0 (grunner overflow, som forklart over). så vil funksjonen returnere verdien til k.
Vis hele sitatet...
Så dette er ikke veldig tilfeldig. Det kunne tilsvarende stått stått j=1 og

Kode

do...while (j <<= 1)
Sitat av etse Vis innlegg
Ble kanskje litt rotete forklart, men jeg regner med jeg er sporet av svaret? Kan dyret bekrefte dette?
Vis hele sitatet...
Siden j er totalt uavhengig av i vil det bli et fast antall runder i funksjonen hver gang. Men hva k faktisk tilsvarer til slutt har du ikke løst enda :P
Et hint kan være å prøve verdiene 255 og 256.
Sist endret av Dyret; 15. april 2010 kl. 17:44.
Sitat av Dyret Vis innlegg
Vel, dette er ikke så utrolig viktig for oppgaven, men du er inne på noe riktig. Observer at 1337 = 1 (mod 2) og 42 = 2 (mod 4). Hvis du har en programmeringskalkulator som viser binærverdien til decimaltallene du regner ut (f.eks. den i Windows7 når du trykker ALT+3) så vil du se at for hver gang det ganges med 42 så skiftes binærverdien av j et hakk mot venstre.



Så dette er ikke veldig tilfeldig. Det kunne tilsvarende stått stått j=1 og

Kode

do...while (j <<= 1)
Siden j er totalt uavhengig av i vil det bli et fast antall runder i funksjonen hver gang. Men hva k faktisk tilsvarer til slutt har du ikke løst enda :P E hint kan være å prøve verdiene 255 og 256.
Vis hele sitatet...
Verdien til k vil jo varierer ut i fra hvor mange bits en integer er på om jeg forstod hele overflowen riktig? Og i fra det jeg husker fra lærebøkene forrige semester kan man ikke forutsette at en standard integer har en fast verdi, da dette kan variere fra kompilator til kompilator. Dermed vil verdien til k vil dermed kunne variere mellom forskjellig kompilatorer og/eller kodespråk. Dermed vil min verdi av k være forskjellig fra din verdi av k, og med mindrejeg har misforstått noe så vil dette svaret ikke ha et direkte fastitsvar.