Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 23 Mai 2015, 14:35 
Offline
Nuby
Benutzeravatar

Registriert: 23 Mai 2015, 13:43
Beiträge: 9
Hallo Rubyportal



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
count = 0
rand_to_arr = []

def another_rando
print "."
rando = rand(1...32)
end

while count <= 32
rando = another_rando
valbit = 0

elements = rand_to_arr.size

it = Proc.new do
elements.times do
elements -= 1
this = rand_to_arr[elements] # voriges element

if this == rando
#print "Thats double moubled!! #{this} is equivalent to #{rando}."
rando = another_rando

#print "Rando should be #{rando} now ? "
end
end
end
it.call
rand_to_arr.push(rando)
if rand_to_arr != rand_to_arr.uniq
print "oh"
rand_to_arr.pop
it.call
end
puts "Added: #{rando} in Array"
count += 1
end

p rand_to_arr
p rand_to_arr.uniq

print rand_to_arr.size


Ist etwas, das ich ganz naiv angefangen habe. Ziel war ein unordentliches Array, jede Zahl soll nur einmal vorkommen.
Soweit geht das ja auch. Ich würde gerne noch wissen ob es eine Funktion dafür gibt? Oder wie man sonst vorgehen würde.
Damit könnten ja zum Beispiel die Karten in einem Kartenspiel gemischt werden.

Ansonsten, ist mein erstes Posting hier, hallo nochmal :) Ich schau ab und zu mal hier rein, Code hier und da mal etwas zum Vergnügen.
Wäre mir eine Ehre mich mit euch auszutauschen, hauter rein

_________________
Ein Eichhörnchen auf Speed hat mich gezwungen das zu schreiben!!


Nach oben
 Profil  
 
BeitragVerfasst: 23 Mai 2015, 18:38 
Offline
Lehrling
Benutzeravatar

Registriert: 28 Feb 2012, 21:58
Beiträge: 86
Wohnort: NRW
Erst einmal Willkommen bei uns,
ich freue mich über jedes neue Gesicht hier. :D

ChairJordan hat geschrieben:
Ich würde gerne noch wissen ob es eine Funktion dafür gibt?

Also um so ein Array durch zu mischen gibt es die Methode shuffle.



Array.shuffle



Also ich würde das ganze so machen:


1
2
3
4

card_deck = (1..32).to_a.shuffle #erstellen eines Zahlen Arrays und direktes mischen der Werte
puts card_deck



Ein wenig genauer kann man das noch machen wenn du dir eine Funktionen/Methoden erstellst


1
2
3
4
5
6

def create_card_deck(size: 32, shuffles: 1)
card_deck = (1..size).to_a
shuffles.times { card_deck = card_deck.shuffle}
card_deck
end

Mit der Methode kannst du dir jetzt immer wieder die gemischte Form ausgeben lassen.
Ich hoffe das hat dir ein wenig geholfen und wenn fragen sind einfach immer her damit :)

mfg Manchotix


Nach oben
 Profil  
 
BeitragVerfasst: 23 Mai 2015, 18:54 
Offline
Nuby
Benutzeravatar

Registriert: 23 Mai 2015, 13:43
Beiträge: 9
Danke freut mich sehr! :)
(Mein Code hatte noch ne Macke und zwar muss man sehen dass die Menge der Zahlen nicht mehr der 32 Schleifendurchläufe entspricht, aber das nur so am Rand :D)

_________________
Ein Eichhörnchen auf Speed hat mich gezwungen das zu schreiben!!


Nach oben
 Profil  
 
BeitragVerfasst: 26 Mai 2015, 08:57 
Offline
Interpreter

Registriert: 10 Dez 2007, 17:37
Beiträge: 1906
Für ein Kartenspiel würde ich einen etwas anderen Ansatz wählen:



1
2
3
4

card_deck=(1..32).to_a
cards_1st_player = card_deck.sample(4) # f��r mehr Zuf��lligkeit card_deck.sample(4, random: random: SecureRandom), geht auch mit shuffle
left_cards_in_deck = card_deck - cards_1st_player

_________________
Grüße
Jack


Nach oben
 Profil  
 
BeitragVerfasst: 27 Mai 2015, 11:30 
Offline
Interpreter
Benutzeravatar

Registriert: 18 Sep 2008, 22:32
Beiträge: 1821
Wohnort: NRW → UN
Wollen wir golfen? Deck mit 32 Karten Nrn. 1-32 in card_deck erzeugen, 4 zufällige Karten nach cards_1st_player ziehen, der Rest aus dem Kartenstapel muss zugänglich sein.




card_deck=(1..32).to_a;cards_1st_player=card_deck.shuffle!.slice!(0..3)


71 Zeichen. card_deck enthält nur noch die übrigen Karten. Wer schafft es kürzer?

Valete,
Quintus

_________________
Habe den Mut, dich deines eigenen Verstandes zu bedienen! — Immanuel Kant

Ich bin freischaffender Softwareentwickler und freue mich über jedes neue Projekt. Kontaktinformation auf meiner Website.

Mein Blog | GitHub-Profil | Auf Twitter: @qquintilianus | PGP/GPG-Schlüssel: B1FE 958E D5E8 468E AA20 8F4B F1D8 799F BCC8 BC4F


Nach oben
 Profil  
 
BeitragVerfasst: 27 Mai 2015, 13:38 
Offline
Interpreter

Registriert: 10 Dez 2007, 17:37
Beiträge: 1906



card_deck=(1..32).to_a;cards_1st_player=card_deck.shuffle!.slice!(0,4)
;)

_________________
Grüße
Jack


Nach oben
 Profil  
 
BeitragVerfasst: 20 Sep 2015, 18:51 
Offline
Nuby
Benutzeravatar

Registriert: 23 Mai 2015, 13:43
Beiträge: 9
Ah & Oh ich freue mich :) Leider habe ich mich nur noch in ein Buch vergraben gehabt und das hier nicht mehr verfolgt. Gerade habe ich auch nur überflogen aber ich werde auf jedenfall über kurz oder lang ein Kartenspiel machen wollen, wahrscheinlich mit Tk !! Thank you!! :)

_________________
Ein Eichhörnchen auf Speed hat mich gezwungen das zu schreiben!!


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
cron