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.
  149 25468
Sikkerhetsklarert
Virker som at det er veldig mange som starter så smått med programmering i div språk nå for tiden.

Ser at det er mange som "hiver" seg på VB da de så "enkelt" kan lage webbrowsere etc.. Skjønner jo at det er morsomt å begynne med noe som raskt gir resultater. Og det er kanskje ikke like morsomt å begynne i riktig ende, der man lærer det grunnleggende med variabler og arrays, operatører, if spørringer, while og for løkker etc..

Jeg tenkte derfor at vi kan lage en liten tråd med oppgaver som man må løse, slik at man får en liten utfordring man må finne en løsning på selv, i stedet for å se på en guide der alt er forklart, slik at man bare copy/paster.. Det lærer man ingen ting av.

Jeg kan begynne med to små oppgaver.

-1-
Lag et program som tar et tall mellom 0 og 100.
Programmet skal så la deg gjette på hvilket tall den "tenker" på. Den skal så gi tilbakemelding til deg om du må gjette høyere eller lavere.

-2-
Veldig lik oppgaven over, men her er det du som skal tenke på et tall, og programmet skal gjette. Du gir tilbakemelding til programmet om det skal gjette høyere eller lavere. Her vil jeg også ha med at den teller antall forsøk, så da er det om å gjøre å finne ut hvordan du kan få den til å gjette tallet på færrest mulig forsøk.

Bruk det språket du kan best. Gjerne et uten gui, slik at dette kan kjøres fra commandolinje. eksempler, python/perl, c++, c#.

Vil gjerne at flere kommer med oppgaver også, da jeg står litt fast selv. Trenger en liten utfordring.
Det virker som en lur idè.
Starter med C# selv nå for tiden, så tror dette kan bli morro.
Hva med en oppgave hvor man kan lese og redigere filer fra komandelinje?
flott skal hive meg igang på python nå Må si meg litt uenig i det med VB og enkelt, da... forstod ingenting der - python var lettere!

OT:
Forresten, om jeg skulle ha GUI til et script laget i python, måtte jeg i såfall kombinere det med et annet program?
Det jeg ville gjort var å følge HiOs kurs i programmering. Gjør oppgavene herfra i det språket du ønsker å lære:
http://www.iu.hio.no/~kjetilg/Underv...001/uvplan.htm

Kode

#Importere modulen random:
import random
#thenumber tilsvarer nå random.randint(0, 100) som er et tilfeldig tall mellom 0 og 100)
thenumber = random.randint(0, 100)

#Introen... Den printer bare din ønskede tekst. 
print "It is a number between 0 and 100. Can you guess it?"
print "Guess-the-number-game made by CromogliC"

#Så til selve gjettedelen av scriptet :)

yourname = raw_input("Please type in your name here: ")


yournumber = raw_input("A random number from 0 to 100: ")

if yournumber < thenumber:
    print "nope, you have got to go higher:)"
if yournumber > thenumber:
    print "nope, you have got to go lower:)"
if yournumber == thenumber:
    print "Amazing, yourname!!"
    print "You picked the right number!"
    print "You are victorious!"
her er min foreløpig. Plages litt med loop, men leser litt på tutors og sånt for å få det til:P SKal jeg her bruke for eller while loop? Føler på meg at det skal være en sånn conditional.

Det jeg plages mest med for tiden, uansett hva jeg lager, er loops kombinert med raw_input. Altså at man kan velge et valg (eller i dette tilfelle, et tall) og så skal hele greia restarte! Har lest og lest ang. loops, men finner ingen ting som kan hjelpe meg med akkurat dette, bortsett fra endel mer avanserte script enn en som har drevet på i 2-3 dager kan klare:P
Sitat av cromoglic
her er min foreløpig. Plages litt med loop, men leser litt på tutors og sånt for å få det til:P SKal jeg her bruke for eller while loop? Føler på meg at det skal være en sånn conditional.
Vis hele sitatet...
Skal du legge til en øvre begrensning på antall gjetteforsøk er en for-løkke (eller while med en teller) godt nok. Hvis du derimot skal la brukeren gjette helt til han får rett, og evt. telle alle forsøk, må du nok ha en while - da du ikke vet hvor mange forsøk det vil ta. For hver gang løkken repeteres må du da hente inn ny input fra brukeren, og løkken må pågå til brukeren har rett.

(En mer dirty variant er jo å sette hele den overnevnte løkken i while(true) og så break'e ut av løkken eller avslutte programmet når man får riktig.)
Sist endret av Dyret; 15. mars 2008 kl. 15:02.
Jeg skal, foreløpig, la brukeren bruke så mange forsøk han vil. Skal prøve å se hva jeg får til utifra det du sa:P Men som sagt, jeg suger med loops:P

Forresten, dersom en ny input fra brukeren skal hentes for hver gang - må jeg ikke ha 14 mil med kode da?

har tenkt litt på noe sånt og:


Kode

while yournumber != thenumber:
        if yournumber < thenumber:
                  print "Nope, you have got to go higher!"
        elif yournumber > thenumber:
                  print "Nope, you have got to go lower!"
        elif yournumber == thenumber:
               print "blkakodwfw"
               print "og så videre."
Men det blir jo en uendelig spam-loop, da:P
Blanding av PHP og Pyhon, dette er vel standardmåten for dette spillet:

Kode

<?php
$number = rand(0,100);
$number = round($number);
echo "Jeg tenker på et tall mellom null og hundre, gjett hvilket:";

while($guess != $number)
{
	echo "\nGjett: ";
    $guess = input();
	
	if($guess < $number) {
		echo "\nTallet er høyere enn $guess, prøv igjen"; }
	if($guess > $number) {
		echo "\nTallet er lavere enn $guess, prøv igjen"; }
}

echo "Du greide det!";

//  Pause for at du skal se output
$pause = raw_input();
?>
Sist endret av Ozma; 15. mars 2008 kl. 16:11.
Nå, altså! Nå funker det Skal laste opp nå

Her er min kode...


Kode

#Importere modulen random: 
import random
#thenumber tilsvarer nå random.randint(0, 100) som er et tilfeldig tall mellom 0 og 100)
thenumber = random.randint(0, 100)
# Et tappert forsøk på en loop.
loop = 1

#Definerer choice.
choice = 0

#Så til selve gjettedelen av scriptet :)

print "It is a number between 0 and 100. Can you guess it?" 
print "Guess-the-number-game made by CromogliC"
print "Just type in a number of your own choice and press enter!"

yourname = raw_input("Please type in your name here: ") 

while loop == 1:
    choice = input("What number do you think is is?: ")
    if choice == thenumber:
        print "Amazing," + " " + yourname + "!"
        print "You have guessed the right number!"
        print "You are victorious!"
        loop = 0
        print "Restart? y for yes. n for no."
        restart = raw_input("Do you want to restart?: ")
        if restart == "y":
            thenumber = random.randint(0, 100)
            loop = 1
        elif restart == "n":
            loop = 0
            print "Game Over!"
            exit()
    elif choice < thenumber:
        print "Nope, you have got to go higher!"
        loop = 1
    elif choice > thenumber:
        print "Nope, you have got to go lower!"
        loop = 1
    elif choice > 100:
        print "I am sorry, but you cannot pick a number above 100!"
        loop = 1
lagra det som .py for å teste som kommandolinjescript, men akkurat det funka ikke...
Sikkerhetsklarert
Trådstarter
Dere har skjønt hvordan dere skal løse nr 1 ser jeg.

Noen som tar nr to da?
Jeg prøver oppgave 1 senere i kveld =) Tror jeg kanskje klarer å fikse den på egenhånd.. Kul idé syns jeg!
Pjukern: Løste nr. 1, ja, men hvordan kan jeg gjøre den om til et vanlig program? slik at jeg kan bruke det på en PC uten python?

Skal prøve på nr. 2, har en viss anelse om hvordan det bør se ut, men venter til i kveld

FF bør forresten få en -funksjon til slike anledninger:P
Sikkerhetsklarert
Trådstarter
Sitat av cromoglic
Pjukern: Løste nr. 1, ja, men hvordan kan jeg gjøre den om til et vanlig program? slik at jeg kan bruke det på en PC uten python?

Skal prøve på nr. 2, har en viss anelse om hvordan det bør se ut, men venter til i kveld

FF bør forresten få en -funksjon til slike anledninger:P
Vis hele sitatet...
Python er et scriptspråk og man kan ikke uten videre lage .exe filer av det. (dvs man har py2exe)
Hehe, laget en overkill OOP-versjon av oppgave 1 og 2. Tidsfordriv ftw...

http://notisblokk.no/28

Kode

 <?php

class Thinker
{
	function Thinker($name) 
	{
		$this->name = $name;
	}
	
	function number($min=0, $max=100)
	{
		if(isset($this->number))
		{
			return $this->number;
		} else {
			$number 	  = rand($min, $max);
			$this->number = round($number);
			echo "<strong>$this->name: </strong>I am thinking about a number between $min and $max. ($this->number)<br />\n";
			return  $this->number;
		}
	}
	
	function feedback($guess)
	{
		if($guess < $this->number)
		{
			echo "<strong>$this->name: </strong>The number I'm thinking about is higher than that!<br />\n";
			echo "<!--The number $guess is lower than $this->number-->\n";
			return "higher";
		} else {
			echo "<strong>$this->name: </strong>The number I'm thinking about is lower than that!<br />\n";
			echo "<!--The number $guess is higher than $this->number-->\n";
			return "lower";
		}
	}
}

class Guesser
{
	function Guesser($name) 
	{
		$this->name = $name;
	}
	
	function feedback($feedback)
	{
		if($feedback == "higher")
		{
			$this->last_feedback = "higher";
			$this->guess_min = $this->last_guess;
			echo "<!--The number can't be lower than $this->last_guess-->\n";
		}
		
		if($feedback == "lower")
		{
			$this->last_feedback = "lower";
			$this->guess_max = $this->last_guess;
			echo "<!--The number can't be higher than $this->last_guess-->\n";
		}
	}
	
	function guess($min, $max)
	{
		if(!isset($this->guess_min) || !isset($this->guess_max))
		{
			$this->guess_min = $min;
			echo "\n<!--Guess min = $min-->";
			$this->guess_max = $max;
			echo "\n<!--Guess max = $max-->";
		}
		
		$this->guesses++;
		
		if(!isset($this->last_guess)) {
			$this->last_guess = 1;
		}
		
		$tmpguess = ($this->guess_min + $this->guess_max)/2+rand(-1,1)/10;
		echo "\n<!--Guess is $guess-->";
		$guess = round($tmpguess);
		
		if($guess == $this->last_guess)
		{
			if($this->last_feedback == "lower") {
				$guess -= 1;
			}
			
			if($this->last_feedback == "higher") {
				$guess += 1;
			}
		}
		
		echo "<br />\n<strong>$this->name: </strong>I'm guessing the number is $guess<br />\n";
		$this->last_guess = $guess;
		return $guess;
	}
}

$Per = new Thinker('Per');
$Jon = new Guesser('Jon');
$min = 1;
$max = 100;
$Per->number($min,$max);

while(!$finished)
{
	$guess = $Jon->guess($min,$max);
	
	
	if($guess == $Per->number($min,$max))
	{
		$finished = true;
		echo "<br />\n<strong>The number $guess is correct! You did it in $Jon->guesses tries.</strong><br />\n";
	} else {
		$Jon->feedback($Per->feedback($guess));
	}
	
	if($Jon->guesses > 100)
	{
		die("Something went horribly wrong...<br />\n");
	}
}


?>
Eksempelutputt:

Kode

Per: I am thinking about a number between 1 and 100. (82)

Jon: I'm guessing the number is 50
Per: The number I'm thinking about is higher than that!

Jon: I'm guessing the number is 75
Per: The number I'm thinking about is higher than that!

Jon: I'm guessing the number is 88
Per: The number I'm thinking about is lower than that!

Jon: I'm guessing the number is 82

The number 82 is correct! You did it in 4 tries.
Sist endret av Ozma; 15. mars 2008 kl. 18:45.
Sikkerhetsklarert
Trådstarter
Hehe der ja.. Gikk litt over mitt nivå av hva jeg forstår av php.
"$this->" sier meg liksom ikke noe...

uansett det jeg ville frem til her var denne "algoritmen" for å beregne nye guess

$min = 0
$max = 100
$guess = ($min + $max) / 2

Hvis feedbacken var lower, så settes $max til forrige guess, og er feedback higher, så settes $min til forrige guess.
Lagte nå en liten og lett i VB6, oppgave1 kan hentes på Rapidshare

Kode

Dim rand As Integer
Dim teller As Integer

Private Sub Command1_Click()
If Command1.Caption = "New Game" Then
    teller = 0
    rand = Int((100 - 1) * Rnd + 1)
    Command1.Caption = "Guess"
    Label1.Caption = "Try to find the number between 1 and 100..!"
    Text1.Text = " "
Else
    teller = teller + 1
    If CInt(Text1.Text) > rand Then
        Label1.Caption = "Your guess is too high"
    End If
    If CInt(Text1.Text) < rand Then
        Label1.Caption = "Your guess is too low"
    End If
    If CInt(Text1.Text) = rand Then
        Label1.Caption = "Congratulations, your guess was correct. You used " & teller & " guesses..!"
        Command1.Caption = "New Game"
    End If
End If
End Sub

Private Sub Form_Load()
    Label1.Caption = "Try to find the number between 1 and 100..!"
    Text1.Text = " "
    Command1.Caption = "Guess"
    rand = Int((100 - 1) * Rnd + 1)
    Form1.Caption = "Random Guess..!"
End Sub

Oppgave2 kan hentes på Rapidshare

Kode

Dim guess As Integer
Dim teller As Integer
Dim x As Integer
Dim y As Integer

Private Sub Command1_Click()
    x = guess
    guess = Int((x - y) * Rnd + y)
    Label1.Caption = "My guess is " & guess & "..!"
    teller = teller + 1
End Sub

Private Sub Command2_Click()
If Command2.Caption = "New Game" Then
    Command1.Enabled = True
    Command3.Enabled = True
    Command2.Caption = "Correct"
    teller = 1
    x = 100
    y = 1
    guess = Int((x - y) * Rnd + y)
    Label1.Caption = "My guess is " & guess & "..!"
Else
    Label1.Caption = "Yay, only " & teller & " guesses..!"
    Command1.Enabled = False
    Command3.Enabled = False
    Command2.Caption = "New Game"
End If
End Sub

Private Sub Command3_Click()
    y = guess
    guess = Int((x - y) * Rnd + y)
    Label1.Caption = "My guess is " & guess & "..!"
    teller = teller + 1
End Sub

Private Sub Form_Load()
    Command1.Caption = "Too High"
    Command2.Caption = "Correct"
    Command3.Caption = "Too Low"
    teller = 1
    x = 100
    y = 1
    guess = Int((x - y) * Rnd + y)
    Label1.Caption = "My guess is " & guess & "..!"
End Sub
EDIT: Endret litt i random koden på oppgave1 da den var random men fulgte et fast mønster,samt tellet verdi i oppgave2 da den viste 1 forlite..
Sist endret av Lanjelin; 15. mars 2008 kl. 23:00.
Sikkert mange som er kommet over dette før :P

Anbefaler alle å se på linken som Nicho postet. Det var mange gode oppgaver der. Selve guiden er Java, men oppgavene kan løses i nesten hvilket som helst språk.

Oppgave 3:
Litt mer grafisk denne gangen.
Lag et program som tegner funksjonen f(x) = sin(x) med et intervall mellom punktene som ikke dreper PC-en. Lag kurven i en passe størrelse på et 200x200px bilde med origo i midten.
Trigonoceps occipita
vidarlo's Avatar
Donor
Bidrar med et par små oppgaver:
1: rot13 - les inn en string, og utfør rot13 på den. Kan med fordel ha opsjon for å utføre rotn istaden for rot13.
2: Print ascii-tabellen for dei printbare ascii-tegna i brainfuck.

To oppgaver eg har sett stor pris på Den siste er rimelig vanskelig, og krever en del tankekraft på å bygge opp logikken
Her er det endel oppgaver:

http://www.tceacontests.org/programming/archive.html

Oppgavene er oppgaver fra tidligere TCEA (Texas Computer Education Association) konkuranser. Kan brukes for alle språk (ville jeg tro).

Alle oppgavesettene inneholder oppgaver av forskjellig vannskelighets grad. 2 poeng er lett, mens 9 poeng er vanskelig.

bør være nok for de fleste begynnere, kos dere
Sikkerhetsklarert
Trådstarter
Nå syns jeg vanskelighetsgraden hoppet en god del her.

Jeg slenger meg på nr1 fra vidarlo.
til info hvis noen lurer "Rot13" kan man kalle en slags kryptering av en tekst. Man legger flytter en bokstav 13 plasser frem i alfabetet. Dvs
A = N (A er bokstav 1, 1+13 = 14. M er bokstav 14

Sliter litt med de 13 siste bokstavene i alfabetet.. Hvis man legger til 13 i ascii verdien der, så blir det plutselig ikke bokstaver lenger. Er vel greit at man begynner på "A" igjen etter "Z"..
Sist endret av Pjukern; 16. mars 2008 kl. 00:39.
Trigonoceps occipita
vidarlo's Avatar
Donor
Pjukern... absoulutt, dei første 13 er jo piece of cake; legg til 13 til ASCII-nummeret. Dei siste er derimot litt verre med - men kanskje % (c-syntax) kan hjelpe deg?

Case-setning på alle tegn er forøvrig juks, og kjedelig.
vidarlo: Oppg. 1:

Kode

# Lists of all the letters:
letters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','æ','ø','å']
capletters = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','Æ','Ø','Å']

# Her skriver du inn teksten rot13 skal utføres på.
string = raw_input("On which text do you want to perform rot13?: ")

for letter in string:
    print letter + 13
er jeg inne på rett tankegang her?:P
Har løst oppgaven min selv med JavaScript. Fant en skikkelig gøy tag som funker i Opera, Safari og Firefox

http://data.flabb.net/jsgraph.html
Sjekk source for å se koden.

Her er en tutorial om <canvas>: http://developer.mozilla.org/en/docs/Canvas_tutorial
Sitat av cromoglic
vidarlo: Oppg. 1:

Kode

# Lists of all the letters:
letters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','æ','ø','å']
capletters = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','Æ','Ø','Å']

# Her skriver du inn teksten rot13 skal utføres på.
string = raw_input("On which text do you want to perform rot13?: ")

for letter in string:
    print letter + 13
er jeg inne på rett tankegang her?:P
Vis hele sitatet...
Nå har ikke jeg peiling på pyton, så jeg kan desverre ikke svare for deg der. Når det gjelder det programatiske, så tror jeg du tenker rett, men allikevel misforstår litt.

For det første, arrayene dine, letters og capletters trenger du jo ikke i dette tilfellet. Ihvertfall ikke med ditt nåværende kode-utgangspunkt. Det letteste er nok å loope strengen du får, så konvertere hvert lett til ascii, plusse på 13, så konvertere tilbake. Bare for å sette deg i gang med litt basic tankegang:

for(int i=0; i<string.length; i++)
{
letter = string[i];
ascii = Convert.ToAscii(letter);
newLetter = Convert.ToString(ascii+13);
}

Dette er selvsagt ikke fungerende kode, men det gir deg kanskje en puff i riktig retning.
Et lite off topic spm:

Hvis man vil satse på en karriere innenfor programmering, lønner det seg da å lære seg C++ fremfor Python? Har kommet så vidt i gang med Python, men vet ikke i hvilken grad dette språket brukes i arbeidslivet.
med fruktkjøtt.
Tias's Avatar
Crew
Begge språkene brukes i arbeidslivet. C++ er kanskje mer brukt i ren applikasjonsutvikling, men Python er nok en del brukt til småoppgaver, som lim mellom forskjellige prorgammer etc. Jeg tror nok ikke du vil få en jobb bare på bakgrunn av at du kan python, men det skader definitivt ikke. Når du først har lært poengene med python så burde det ikke være så veldig vanskelig å lære C++ heller

(Men hvis du ser på hva slags utviklere som søkes for tiden så er det en tung overvekt på C# og Java...)
Sikkerhetsklarert
Trådstarter
Kunne trengt litt hjelp med rot^n oppgaven

Har lowercase og uppercase alfabet i hvert sitt array.
sammenligner input arrayet (det som brukeren vil kryptere) med hvert av alfabet arrayene, når den ser at bokstavene er like, så øker den plasseringen i alfabet arrayet med N, men la oss si at den ser bokstaven Z som er siste plassering i arrayet, og prøver å sette den krypterte verdien til en bokstav N plasseringer lenger frem, så kommer den utenfor arrayet, og jeg får en stygg feilmelding.

Noen som veit om en måte å få den til å begynne på [0] igjen?
if(value>X) { value = 0; }
Trigonoceps occipita
vidarlo's Avatar
Donor
Sitat av Pjukern
Kunne trengt litt hjelp med rot^n oppgaven

Har lowercase og uppercase alfabet i hvert sitt array.
sammenligner input arrayet (det som brukeren vil kryptere) med hvert av alfabet arrayene, når den ser at bokstavene er like, så øker den plasseringen i alfabet arrayet med N, men la oss si at den ser bokstaven Z som er siste plassering i arrayet, og prøver å sette den krypterte verdien til en bokstav N plasseringer lenger frem, så kommer den utenfor arrayet, og jeg får en stygg feilmelding.

Noen som veit om en måte å få den til å begynne på [0] igjen?
Vis hele sitatet...
Array er juks. Det kan løysast utan bruk av arrays.
Cromoglic: Jeg vil anbefale deg å lese, det ser fortsatt ikke ut som om du har skjønt deg på logikken, mye av det du skriver ser ut som gjetting.
hmm... vidarlo, har du noen enkle tips?:P

byp4ss: Derfor jeg gjør oppgavene her til oss som starter med programmering:P

Forresten, vil du ha a - z eller a - å?
Trigonoceps occipita
vidarlo's Avatar
Donor
Sitat av The Freak
Har løst oppgaven min selv med JavaScript. Fant en skikkelig gøy tag som funker i Opera, Safari og Firefox

http://data.flabb.net/jsgraph.html
Sjekk source for å se koden.

Her er en tutorial om <canvas>: http://developer.mozilla.org/en/docs/Canvas_tutorial
Vis hele sitatet...
Hehe, artig Neste steg må jo vere å ikkje bruke js sine math-funksjoner, men finne ei tilnærming til sinus ved hjelp av t.d ei maclaurinrekke, og bruke det... Det er jo litt ekstra trening i å behandle tall i et språk, og relativt sett mindre om logikken

http://membres.lycos.fr/amycoders/tu...sintables.html gir litt info
rotn i C# .NET

http://pastebin.com/f11a213d4
Sist endret av sFilez; 16. mars 2008 kl. 13:50.
Sikkerhetsklarert
Trådstarter
Sitat av vidarlo
Array er juks. Det kan løysast utan bruk av arrays.
Vis hele sitatet...
juks?

Altså jeg har en løsning på det kun ved å kaste bokstaver inn i en integer, da får jeg ascii vedien, men på den måten får jeg også det samme problem ved at den fortsetter ut i "tegn" delen av ascii tabellen.. Så jeg syns det var mer elegant å bruke arrays.. koden ble litt ryddigere da
Trigonoceps occipita
vidarlo's Avatar
Donor
Pjukern, arrays er ryddigere, men da har du skreve 30 linjer meir enn nødvendig - og gjort algoritma om til search and replace. Poenget med oppgava var ei utfordring til å lage algoritma, og det hopper du bukk over ved å bruke arrays...

Men et par små hint: du veit kva som er øvre og nedre grense for at eit teikn er ein bokstav. Sjekk at tegnet du får ut faktisk er en bokstav. Deretter må du bruke litt logikk for å skille store og små bokstaver, og sørge for at du wrapper rundt mellom dei 26 tegna du har tilgjengelig... det er *der* utfordringa ligger i denne oppgava, ei kvar ape kan få til å lage ei løsning med arrays
Sikkerhetsklarert
Trådstarter
ok får se litt til på det da..
Men array løsningen min er på færre linjer enn på den der jeg kun bruker asci.. Små og store bokstaver har ikke noe å si på asci metoden da det store alfabetet og det lille fortsatt ligger i "rekkefølge"
Sitat av vidarlo
2: Print ascii-tabellen for dei printbare ascii-tegna i brainfuck.
Vis hele sitatet...

Kode

>>>>>>>++++++++++++
[<<<<<<<+>+++>+>++++>++++>++++>++++++++>-]
<<<<<<<--->---->-->>+++<++>>>->++++++++>+++++++<<
[>>>>>+>+<
[<[-]<[-]<<
[>>+>+<<<-]
>>[<<+>>-]+
>[<->[-]]
<[<-<++++++++++<<<+<---------->>>>>>-]
>>->]
<<<<<<-<
<.<.<.+
<<<.>.+>.>>>>-]
Jeg la også inn en liten counter

Kode

032      
033     !
034     "
035     #
036     $
037     %
038     &
039     '
040     (
041     )
042     *
043     +
044     ,
045     -
046     .
047     /
048     0
049     1
050     2
051     3
052     4
053     5
054     6
055     7
056     8
057     9
058     :
059     ;
060     <
061     =
062     >
063     ?
064     @
065     A
066     B
067     C
068     D
069     E
070     F
071     G
072     H
073     I
074     J
075     K
076     L
077     M
078     N
079     O
080     P
081     Q
082     R
083     S
084     T
085     U
086     V
087     W
088     X
089     Y
090     Z
091     [
092     \
093     ]
094     ^
095     _
096     `
097     a
098     b
099     c
100     d
101     e
102     f
103     g
104     h
105     i
106     j
107     k
108     l
109     m
110     n
111     o
112     p
113     q
114     r
115     s
116     t
117     u
118     v
119     w
120     x
121     y
122     z
123     {
124     |
125     }
126     ~
Sist endret av TanteSpiker; 16. mars 2008 kl. 17:10.
Sikkerhetsklarert
Trådstarter
Sitat av vidarlo
Bidrar med et par små oppgaver:
1: rot13 - les inn en string, og utfør rot13 på den. Kan med fordel ha opsjon for å utføre rotn istaden for rot13.
Vis hele sitatet...
Mitt forslag

Kode

using System;

namespace rotn
{
    class Program
    {
        static void Main(string[] args)
        {
            
            //Spør etter nøkkel, hvor mange plasser hver bokstav skal flyttes
            Console.Write("Hvor mange plasser skal flyttes: ");
            int n = Convert.ToInt32(Console.ReadLine());

            // Spør etter input tekst
            Console.Write("Tast inn tekst som skal krypteres: ");
            string input = Console.ReadLine();

            //Konverterer strengen til array og legger den i arrayet "kryptert"
            char[] kryptert = input.ToCharArray();
            int mycharint;

            //Looper igjennom input teksten 
            for (int i = 0; i < kryptert.Length; i++)
            {

                mycharint = (int)kryptert[i];//Gjør om bokstaven til integer, dvs man får ascii verdien

                //lower case.. a til z
                if ((mycharint >= 97) && (mycharint <= 123))
                {
                    // flytter den n antall plasser
                    mycharint += n;
                    // kommer man utenfor a til z så trekker man fra 26, slik at man begynner på nytt ved a
                    if (mycharint >= 123) { mycharint -=26; }
                    
                    //Gjør om igjen til en bokstav fra ascii, (int to char)
                    kryptert[i] = (char)mycharint;
                }

                //Upper case A til Z
                else if ((mycharint >= 65) && (mycharint <= 90))
                {
                    // flytter den n antall plasser
                    mycharint += n;
                    // kommer man utenfor a til z så trekker man fra 26, slik at man begynner på nytt ved a
                    if (mycharint >= 91) { mycharint -= 26; }

                    //Gjør om igjen til en bokstav fra ascii, (int to char)
                    kryptert[i] = (char)mycharint; 
                }


                //Tall og andre tegn. Disse lar vi være som de er.
                else if ((mycharint >= 32) && (mycharint <= 64))
                {
                    kryptert[i] = (char)mycharint;
                }

            }

            Console.Write("Kryptert tekst: ");
            
            //Printer ut en og en bokstav fra arrayet
            for (int m = 0; m < input.Length; m++)
            {

                Console.Write("{0}", kryptert[m]);
            }



            Console.WriteLine();
            Console.ReadLine();




        }
    }
}
Exe:
http://filserver.pyrabel.net/csharp/rotn.exe
Sist endret av Pjukern; 16. mars 2008 kl. 17:37.
http://projecteuler.net/

Her er det mye moro, kids! 200kr til den første som løser alle i brainfuck
Noen som forresten har en måte å få forsøksteller på oppgave 1: Gjett-hvilket-nummer-greia? HAr også prøvd å lagre data til et tekstdokument, men det funker jo da ikke. Jeg snakker nå Python:P har søkt og søkt og lest og lest , men ennå ikke fått til :P
Hva med denne:

Bruk gjerne kommandolinje, eller et enkelt grafisk brukergrensesnitt.

La bruker skrive inn 2 eller fler "varer".
Bruker skal etter vareregistrering få en forespørsel/et valg om varene skal sorteres alfabetisk stigende/synkende, eller i en rekkefølge som bruker angir selv.

Varelisten skal så skrives ut i console/teksboks for å se at det ble riktig.

Tips: Array, Løkker, Select Case/If
Sikkerhetsklarert
Trådstarter
Sitat av cromoglic
Noen som forresten har en måte å få forsøksteller på oppgave 1: Gjett-hvilket-nummer-greia? HAr også prøvd å lagre data til et tekstdokument, men det funker jo da ikke. Jeg snakker nå Python:P har søkt og søkt og lest og lest , men ennå ikke fått til :P
Vis hele sitatet...
Du trenger en variabel som du øker med 1 for hver gang bruker har gjettet feil.

Usikker på syntaks i python, men for å øke en variabel med 1 kan man gjøre en av følgende:

1)variabel ++
2)variabel += 1
3)variabel = variabel +1

Alle disse tre vil gi samme resultat. (om språket støtter det)


Kode

int = forsok = 0
 while yournumber != thenumber:
        if yournumber < thenumber:
                  print "Nope, you have got to go higher!"
                  forsok ++ 
        elif yournumber > thenumber:
                  print "Nope, you have got to go lower!"
                  forsok ++
        elif yournumber == thenumber:
               print "blkakodwfw"
               print "og så videre."  
               print " Du brukte" + forsok
Funka når jeg brukte

forsøk = 0

og så forsøk = forsøk +1 på >, < og ==

Men å skrive til fil... Ingen av de kommandoene jeg har funnet har funka... tenkte å lage en slags "highscore", men de kommandoene jeg har prøvd og funnet har ikke fungert!

masac: Til din oppgave:

Kode

 vare1 = raw_input("Vare nummer 1: ")
vare2 = raw_input("Vare nummer 2: ")

#Sortering:


print "I hvilken rekkefølge vil du ha sortert varene? Sriver du selvvalg, velger du selv"
print "Og om du skriver alfabetisk, kommer de i alfabetisk rekkefølge"
print "Mens om du skriver synkende, kommer de i alfabetisk rekkefølge - bare synkende."

rekkefølge = raw_input("Velg rekkefølgevalg her: ")
if rekkefølge == "synkende":
    print
Sånn ser den ut sålangt... skal jobbe med alfabetisk rekkefølge i morgen. Ser den bra ut foreløpig?
Sitat av cromoglic
Funka når jeg brukte

forsøk = 0

og så forsøk = forsøk +1 på >, < og ==

Men å skrive til fil... Ingen av de kommandoene jeg har funnet har funka... tenkte å lage en slags "highscore", men de kommandoene jeg har prøvd og funnet har ikke fungert!

masac: Til din oppgave:

Kode

 vare1 = raw_input("Vare nummer 1: ")
vare2 = raw_input("Vare nummer 2: ")

#Sortering:


print "I hvilken rekkefølge vil du ha sortert varene? Sriver du selvvalg, velger du selv"
print "Og om du skriver alfabetisk, kommer de i alfabetisk rekkefølge"
print "Mens om du skriver synkende, kommer de i alfabetisk rekkefølge - bare synkende."

rekkefølge = raw_input("Velg rekkefølgevalg her: ")
if rekkefølge == "synkende":
    print
Sånn ser den ut sålangt... skal jobbe med alfabetisk rekkefølge i morgen. Ser den bra ut foreløpig?
Vis hele sitatet...
Hei,
Dette ser jo lovende ut Ville kanskje benyttet meg av y/n prompt istedenfor ord, men det bestemmer du jo selv. Den vanskligste biten gjenstår, men kan jo gi deg noen pekepinner på hvordan det kan gjøres.

Selvvalgt rekkefølge løses ofte med bruk av heltall , bruker en logikk for å legge varene i riktig rekkefølge basert på hvilket tall de er festet til.

ASC/DESC sortering kan gjøres på veldig mange måter, men for å lære mest mulig om string manipulering kan jeg jo anbefale mot en oppsplitting av varenavnene, altså bokstav for bokstav, også bruke dette for å få til en sortering.
( Viss dette viser seg å bli for vansklig tror jeg muligens det finnes Array klasser hvor en innebygget Sort funksjon eksisterer )
masac: Jeg glemte meg av, men begynner igjen nå:P Det jeg først og fremst må, er å få Python til å skjønne at det skal sortere alfabetisk:P Skal ordne på kode (y/nprompt osv) etterpå, når jeg har fått hele greia til å funke

Brukte google litt på den sorteringsdelen. Fant en kommando som heter xxx.sort(blablabla)

Den forklarte ikke noe særlig utover det jeg posta, men jeg ser for meg at dette ville funka:

Kode

(jeg går nå ut ifra at personen kun vil legge inn 2 varer)

i tillegg til det jeg har skrevet før:

varer = [vare1, vare2]
Og så ta sorteringa med en varer.sort(blablabla) etterpå. Tar jeg meget feil nå?:P

"for letter in vare:" bare med ganske så mange modifikasjoner ville vel funket i ordoppdeling? dersom jeg skriver:

Kode

vare = raw_input("Varenavn: ")
for letter in vare:
       print letter
så skal jo python returnere ordet jeg skriver i raw_input (varen) bokstav for bokstav. Kan ikke det brukes? jeg brukte uansett varer.sort(key=string.lower) og varer.sort(key=string.lower, reverse=True) - fant de ut selv, faktisk Jeg fant ut at det der med lambda x, y og masse mer ble for tungvint, så jeg prøvde meg litt fram i python:P

Vel, jeg ble tilnærmet ferdig:

Kode

antallvarer = raw_input("Hvor mange varer vil du ha registrert? 1 - 5: ")

if antallvarer == "1":
    vare1 = raw_input("Vare nummer 1: ")
    varer = [vare1]
elif antallvarer == "2":
    vare1 = raw_input("Vare nummer 1: ")
    vare2 = raw_input("Vare nummer 2: ")
    varer = [vare1, vare2]
elif antallvarer == "3":
    vare1 = raw_input("Vare nummer 1: ")
    vare2 = raw_input("Vare nummer 2: ")
    vare3 = raw_input("Vare nummer 3: ")
    varer = [vare1, vare2, vare3]
elif antallvarer == "4":
    vare1 = raw_input("Vare nummer 1: ")
    vare2 = raw_input("Vare nummer 2: ")
    vare3 = raw_input("Vare nummer 3: ")
    vare4 = raw_input("Vare nummer 4: ")
    varer = [vare1, vare2, vare3, vare4]
elif antallvarer == "5":
    vare1 = raw_input("Vare nummer 1: ")
    vare2 = raw_input("Vare nummer 2: ")
    vare3 = raw_input("Vare nummer 3: ")
    vare4 = raw_input("Vare nummer 4: ")
    vare5 = raw_input("Vare nummer 5: ")
    varer = [vare1, vare2, vare3, vare4, vare5]



import string
#Sortering:


print "I hvilken rekkefølge vil du ha sortert varene?"
print "Og om du skriver alfabetisk, kommer de i alfabetisk rekkefølge"
print "Mens om du skriver synkende, kommer de i alfabetisk rekkefølge - bare synkende."
print "Skriv avslutt for å avslutte."
loop = 1

while loop == 1:
    rekkefølge = raw_input("Velg rekkefølgevalg her: ")
    if rekkefølge == "alfabetisk":
        varer.sort(key=string.lower)
        print varer
        loop = 1
    elif rekkefølge == "synkende":
        varer.sort(key=string.lower, reverse=True)
        print varer
        loop = 1
    elif rekkefølge == "avslutt":
        yesno = raw_input("Er du sikker på at du vil avslutte? ja/nei: ")
        if yesno == "ja":
            print "Farvel:)"
            exit()
        elif yesno == "nei":
            loop = 1
Sånn ser den ut sålangt den er litt rotete og stor, men jeg gadd ikke ordne så mye

som dere ser, er starten meget lang:P fant ikke ut noen måte og lage en liste automatisk etter hvilket input brukeren skrev inn, altså at om brukeren skrev 99 på antall varer, så skulle den lage inputs til 99 varer, og også lagre de som vare1, vare2, vare3 osv i en liste:P

Fikk lyst å prøve meg på den rot13oppgaven igjen, nå:P Det jeg plages med, er konverteringen av en bokstav til ascii. Akkurat nå prøver jeg å fortså "konseptet", med å prøve diverse kommandoer. Prøvde 'hallo'.encode('ascii'), men den returnerer bare hallo. Noen osm kan gi meg et lite dytt?:P
Ja, kan vel dra igang en annen oppgave:

Man skal lage en "minibank", den første teksten som kommer opp lyder slik:

Hei og velkommen til DinMinibank, vennligst skriv inn kontonummer. Når man har skrevet kontonummeret skal det komme opp en tekst som lyder slik: Hei, Valgt navn(ett navn per kontonummer). Nå skal man kunne velge Ta ut penger eller sett inn penger, man skal hele tiden ha oversikt over penger som er inne på kontoen.

Velg hvilket språk dere vil bruke.
Tobiasmt: Først og fremst, hvor mange kontoer vil du ha registrert i denne "minibanken"?
Sitat av cromoglic
Tobiasmt: Først og fremst, hvor mange kontoer vil du ha registrert i denne "minibanken"?
Vis hele sitatet...
Egentlig opp til dem som lager den det, men noe rundt tallet 3 kanskje... Er ikke selv ute etter en slik kode, men tenkte det hadde vært en fin oppgave for folk som har begynt i java med "programmer" som vises i dos og ikke andre IDE..
Skjønte det, bare lurte på hvor mange kontoer du ville ha, for oppgavens skyld Er kommet godt igang nå i python, du kan få se hvordan den ser ut foreløpig

Kode

import os
import time
import sys

validaccounts = {}
validaccounts['205672375314'] = "Ola Normann"
validaccounts['151829803742'] = "Kari Normann"
saldo = 10.000


print "Hei, og velkommen til DinMinibank!"
print "Dato og tid:" + " " + time.ctime()
print "Vennligst skriv inn ditt kontonummer."


Kontonummer = raw_input("Skriv inn dit kontonummer, 12 siffer: ") 
loop = 1
while loop == 1:
    if validaccounts.has_key(Kontonummer):
        print "Velkommen," + " " + validaccounts[Kontonummer]
        print "Her er din brukermeny:"
        print "Tast 1 for uttak."
        print "Tast 2 for innskudd."
        print "Tast 3 for saldo."
        choice = raw_input("Ønsket valg: ")
        if choice == 1:
            print "Uttaksmeny."
            print "Skriv inn ønsket uttak"
            print "Husk at maksimalt beløp tilgjengelig for uttak er kr. 10.000"
            uttak = raw_input("Ønsket uttak: ")
            if uttak
Som dere ser, har "rotete" blitt som en signatur i mine "script", men hey! De funker da tilnærmet som de skal!:P Har tenkt å prøve meg i litt mer visuelle språk etter hvert, men jeg tror python er en god start for meg når jeg skal lære meg programmering

Vel, slik ser koden min ut :

Kode

import os
import time
import sys

validaccounts = {}
validaccounts['205672375314'] = "Ola Normann"
validaccounts['151829803742'] = "Kari Normann"
saldo = 10.000


print "Hei, og velkommen til DinMinibank!"
print "Dato og tid:" + " " + time.ctime()
print "Vennligst skriv inn ditt kontonummer."


Kontonummer = raw_input("Skriv inn dit kontonummer, 12 siffer: ") 
loop = 1
while loop == 1:
    if validaccounts.has_key(Kontonummer):
        print "Velkommen," + " " + validaccounts[Kontonummer]
        print "Her er din brukermeny:"
        print "Tast 1 for uttak."
        print "Tast 2 for innskudd."
        print "Tast 3 for saldo."
        choice = raw_input("Ønsket valg: ")
        if choice == 1:
            loop2 = 1
            print "Uttaksmeny."
            print "Skriv inn ønsket uttak"
            print "Husk at maksimalt beløp tilgjengelig for uttak er kr. 10.000"
            while loop2 == 1:
                uttak = raw_input("Ønsket uttak: ")
            if uttak <= 10000:
                print "Valgt uttak: kroner" + " " + uttak
                print "Vennligst ta ditt minibankkort, og så pengene"
                saldo = saldo - uttak
                loop = 1
            elif uttak > 10000:
                print "Ugyldig uttak."
                loop2 = 1
            elif choice == 2:
                loop3 = 1
                print "Innskuddsmeny."
                print "Skriv inn ønsket innskudd"
                print "Husk at maskimalt beløp tilgjengelig for innskudd er kr. 50.000"
                while loop3 == 1:
                    innskudd = raw_input("Ønsket innskudd: ")
            if innskudd <= 50000:
                print "Valgt innskudd: kroner" + " " + innskudd
                print "Vennligst legg pengene i skuffen som skyves ut"
                print "Husk at vi kun aksepterer sedler!"
                saldo = saldo + innskudd
                loop = 1
            elif innskudd > 50000:
                print "Ugyldig innskudd"
                loop3 = 1
        elif choice == 3:
            print saldo
            loop = 1
men noe er galt, og jeg finner det ikke ut! Når jeg skriver inn et choice (1-3), får jeg bare menyen loopa igjen! Er ganske sikker på at det har noe med oppsettet mitt og gjøre, men jeg får liksom ikke helt funnet ut hva det er. Noen som kan gi meg en hånd?
Jeg fant ut at jeg skulle prøve å løse oppgave nummer en i posten til trådstarter. Jeg valgte å skrive det i javascript, siden det var det som virket enklest akkura da. Det er litt upraktisk, kanskje, men det var gøy å løse oppgaven.

http://markus.navhost.com/gjetting.html