Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Programmieraufgaben Hier wird regelmäßig eine neue Programmieraufgabe gestellt, die dann gelöst werden soll und in Zusammenarbeit mit den Moderatoren auch besprochen werden kann.

Zahlen in zufälliger Reihenfolge

Diskussion: Zahlen in zufälliger Reihenfolge im Forum Programmieraufgaben, in der Kategorie Code Kitchen; Anzeige In C: Mann, ist man eingerostet wenn man ne Weile nix macht Code: #include <stdlib.h> #include <stdio.h> main() { ...

Like Tree6Likes

Antwort
Alt 07.01.09, 02:41   #31 (permalink)
 
Registriert seit: 06.05.06
Woodchopper Leistung: Facit NTK
Likes: 0
Standard

Anzeige

In C:
Mann, ist man eingerostet wenn man ne Weile nix macht

Code:
#include <stdlib.h>
#include <stdio.h>

main()
{
srand(time(0));
int a[9999],i,c,k;
FILE *file;

for(i=0;i<=9999;i++)a[i]=i;
for(i=0;i<=9999;i++){c=a[i];a[i]=a[k=rand()%10000];a[k]=c;}

file=fopen("random_number_list.txt", "w");
if(file==NULL){printf("File Access Error");exit(EXIT_FAILURE);}
for(i=0;i<=9999;i++)fprintf(file, "%00004d\n",a[i]);
fclose(file);
}
Angehängte Dateien
Dateityp: txt random_number_list.txt (58,6 KB, 5x aufgerufen)
Woodchopper ist offline   Mit Zitat antworten
Alt 07.01.09, 10:52   #32 (permalink)
 
Registriert seit: 26.12.08
Athelstan Leistung: Facit NTK
Athelstan eine Nachricht über ICQ schicken
Likes: 0
Standard

Hier meine ruby Lösung:

Code:
a = []; i = 0; k = 0
while a.length != 10000
	b = rand(10000); k = 0
	a.each { |part|
		if part == b
			k = 1
		end
	}
	if k != 1
		a.push(b)
		if b < 10
			puts "000#{b}"; c = "000#{b}"
		elsif b < 100
			puts "00#{b}"; c = "00#{b}"
		elsif b < 1000
			puts "0#{b}"; c = "0#{b}"
		else
			puts "#{b}"; c = "#{b}"
		end
		file = File.new("zahlen.txt", "a"); file.puts c; file.close
	end
end
Alle Zahlen werden in der Datei zahlen.txt abgespeichert.
Athelstan ist offline   Mit Zitat antworten
Alt 01.04.09, 02:33   #33 (permalink)
 
Registriert seit: 01.04.09
CRMN Leistung: Facit NTK
Likes: 0
Standard

Ebenfalls Ruby:
   

ab 1.8.7:
Code:
open('a.txt','w'){|o|o.puts [*'0000'..'9999'].shuffle}
für ätere Versionen:
Code:
open('a.txt','w'){|o|o.puts [*'0000'..'9999'].sort_by{rand}}
CRMN ist offline   Mit Zitat antworten
Alt 04.06.09, 07:42   #34 (permalink)
RMG
 
Registriert seit: 27.12.07
RMG Leistung: Facit NTK
RMG eine Nachricht über ICQ schicken
Likes: 0
Standard

Ruby

Code:
File.open("zahle.txt", "w") { |datei| 	zahlen = (0000..9999).sort_by{rand}.each { |zahl| 	datei.puts zahl } }
meine version gerade anfänger :-P bin sehr stolz das ich das geschaft habe auch wenn ich das mit den 0456 - 456 nicht hingekrieg habe :-D
RMG ist offline   Mit Zitat antworten
Alt 22.12.10, 16:27   #35 (permalink)
 
Registriert seit: 10.11.10
DMRMcK Leistung: Z3
Likes: 0
Standard VB

Auch wenn der letzte Beitrag schon ein bisschen her ist, hier meine Lösung:

VB-Code   
Code:
Module Module1
    Public ausgegeben(9999) As Integer
    Public zahl As Integer
    Public fName As String = "C:\Zahlenspiel.txt"
    Public alt As String
    Public neu As Boolean = False

    Sub Main()

        For y As Integer = 0 To 9999
            ausgegeben(y) = -1
        Next
        Console.WriteLine("Working...")
        For x As Integer = 0 To 9999
            Randomize()
            neu = False
            Do
                zahl = CInt(Int((10000 * Rnd()) + 1))
                zahl -= 1
                If Array.IndexOf(ausgegeben, zahl) = -1 Then

                    Try
                        Dim inStream As IO.StreamReader
                        inStream = New IO.StreamReader(fName)
                        alt = inStream.ReadToEnd
                        inStream.Close()
                        inStream = Nothing
                    Catch
                        alt = ""
                    End Try

                    Dim outStream As IO.StreamWriter
                    outStream = New IO.StreamWriter(fName)
                    outStream.Write(Format(zahl, "0000") & vbCrLf & alt)
                    outStream.Close()
                    outStream = Nothing

                    ausgegeben(x) = zahl
                    neu = True
                End If
            Loop While neu = False
        Next

        Console.WriteLine("Done!")
        Console.ReadLine()
    End Sub

End Module


Saß ne halbe Ewigkeit an der Erzeugung der Zufallszahlen, da VB i-wie nicht so wollte wie ich...

PS: Hätte die Liste ja als .txt mit hochgeladen, aber die 59KB große .txt war wg. Beschränkung (19,5KB) zu groß.
Wann wurde das eingeführt? Sind ja auch andere .txt Dateien in diesem Thread, die knapp 60KB haben.
Angehängte Dateien
Dateityp: zip Zahlenspiel.zip (24,0 KB, 2x aufgerufen)
DMRMcK ist offline   Mit Zitat antworten
Alt 06.02.11, 14:49   #36 (permalink)
 
Registriert seit: 09.03.04
mise Leistung: Facit NTK
Likes: 0
Standard

Objective-C mit dem Foundation Framework:
Code:
#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    
    NSMutableArray *numbers = [NSMutableArray arrayWithCapacity:10000];
    int i;
    srand(time(NULL));
    for (i = 0; i < 10000; i++) {
        NSString *content = [NSString stringWithFormat:@"%.4d", i];
        NSUInteger numbersCount = [numbers count];
        NSUInteger randomIndex = rand() % (numbersCount+1);
        [numbers insertObject:content atIndex:randomIndex];
    }
    [[numbers componentsJoinedByString:@"\n"] writeToFile:@"output.txt" atomically:YES encoding:NSUTF8StringEncoding error:NULL];
    
    [pool drain];
    return 0;
}
mise ist offline   Mit Zitat antworten
Alt 06.02.11, 17:09   #37 (permalink)
 
Benutzerbild von bad_alloc
 
Registriert seit: 27.12.07
bad_alloc Leistung: 8086
Likes: 39
Standard

Common Lisp:
Code:
(loop for i from 0 upto 1000 collecting i into l 
          finally (with-open-file (file "./a.out" :direction :output)
            (format file "~{~4,'0D~^~%~}" (sort l #'> :key (lambda (x) (random 1.0))))))
__________________
You shoot yourself in somebody else's foot.|Dann gabs da noch den Mathematiker der P?=NP in O(1) erklärte.
|[A]| = p(·,|[A]|)+1
bad_alloc ist offline   Mit Zitat antworten
Alt 08.02.11, 23:55   #38 (permalink)
 
Registriert seit: 12.01.09
lone.wolf Leistung: Z3
lone.wolf eine Nachricht über AIM schicken
Likes: 1
Standard

Code:
[delphi]
procedure BlubGod(Filename: String; Max: DWord);
var
  StrLst  : TStringList;
  Values  : Array of DWord;
  i       : Integer;
begin
  StrLst := TStringList.Create;
  try
    Randomize;
    SetLength( Values, Max );
    for i := 0 to Max - 1 do
      Values[i] := i;
    StrLst.BeginUpdate();
    try
      repeat
        i := Random( Max );
        dec( Max );
        StrLst.Add( IntToStr( Values[i] ) );
        if i = Max then
          Continue;
        // some exchange magic...
        Values[i] := Values[i] - Values[Max];
        Values[Max] := Values[Max] + Values[i];
        Values[i] := Values[Max] - Values[i];
      until Max = 0;
    finally
      StrLst.EndUpdate();
    end;
    StrLst.SaveToFile( Filename );
  finally
    StrLst.Free;
  end;
end;
[/delphi]
Der folgende Aufruf benötigt ~4.0 sek
Code:
  BlubGod('blub.txt', 1000000);

Geändert von lone.wolf (09.02.11 um 00:03 Uhr)
lone.wolf ist offline   Mit Zitat antworten
Alt 17.03.11, 18:58   #39 (permalink)
 
Registriert seit: 16.03.11
chuck Leistung: Z3
Likes: 0
Standard

In Ruby:
Code:
datei=File.open("zahlen.txt","w")
datei.puts Array(1..1000).shuffle.to_s.delete("[").delete("]")
datei.close
chuck ist offline   Mit Zitat antworten
Alt 10.09.11, 01:02   #40 (permalink)
 
Registriert seit: 13.08.07
thodt Leistung: Z3
Likes: 2
Standard

Code:
#!/usr/bin/env ruby

foo = (0..9999).to_a.shuffle
File.open('foo.txt', 'w') { |f| foo.each { |i| f.printf("%04d\n", i) } }

Geändert von thodt (10.09.11 um 01:04 Uhr)
thodt ist offline   Mit Zitat antworten
Alt 10.09.11, 10:20   #41 (permalink)
Moderator
 
Benutzerbild von Elderan
 
Registriert seit: 30.03.04
Elderan Leistung: 8086
Likes: 14
Standard

Hier mein einzeiler, in Anlehnung an



   
echo '0 1 2 3 ... 9999' > random.txt
Elderan ist offline   Mit Zitat antworten
Alt 22.09.11, 02:40   #42 (permalink)
 
Registriert seit: 12.04.09
CiscoKid Leistung: Z3
Likes: 2
Standard

Hier mein Einzeiler in C:

C   

Code:
main(){int i=10000,z=i,x,n[i*2];srand(time(0));while(i)(n[x=rand()%z])?:printf("%04d\n",x,i--,n[x]++);}
Ich wollte eigentlich unter 100 Zeichen kommen, aber 104 klingen auch gut.
Hat wer Ideen, wie (ob) man den noch kürzer bekommt?
CiscoKid ist offline   Mit Zitat antworten
Alt 21.12.11, 23:32   #43 (permalink)
 
Registriert seit: 29.06.10
Thulsadum Leistung: Facit NTK
Likes: 0
Standard

Ein wenig langweilig, aber doch schnell geschrieben in Shellscript (zsh getestet):
zsh   
Code:
for i in {0000..9999}; do echo $i; done| shuf > zahlen.txt
Thulsadum ist offline   Mit Zitat antworten
Alt 28.12.11, 15:44   #44 (permalink)
 
Registriert seit: 25.09.05
elite-noob Leistung: Facit NTK
elite-noob eine Nachricht über ICQ schicken
Likes: 2
Standard

Hier das ganze mal für Windows User ;-)
Habe das mal iN Powershell geschrieben, nicht unbedingt Performant, aber immerhin ;-)

Code:

cls
$Zahl=New-Object int[] 9999
for ($i=0; $i-le 9998; $i++)
{
$Zahl[$i] =$i
}
for ($i=0; $i-le 9998; $i++)
{
$x=$Zahl[$i]
$y= random(0..9998)
$Z=$Zahl[$y]
$Zahl[$i] =$z
$Zahl[$y] =$x
}
 
$Zahl | out-file-filepathE:\Numbers.txt
greetz
chris
elite-noob ist offline   Mit Zitat antworten
Alt 29.12.11, 14:56   #45 (permalink)
Senior Member
 
Benutzerbild von t3rr0r.bYt3
 
Registriert seit: 07.01.03
t3rr0r.bYt3 Leistung: Z3
Likes: 19
Standard

Zitat:
Zitat von Thulsadum Beitrag anzeigen
Ein wenig langweilig, aber doch schnell geschrieben in Shellscript (zsh getestet):
zsh   
Code:
for i in {0000..9999}; do echo $i; done| shuf > zahlen.txt
Das kriegen wir doch kürzer:
Code:
shuf -e {0000..9999} > zahlen.txt

Geändert von t3rr0r.bYt3 (29.12.11 um 14:59 Uhr)
t3rr0r.bYt3 ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » Programmieraufgaben » Zahlen in zufälliger Reihenfolge
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Arabische Zahlen in Römische Zahlen konvertieren in C Mjoelnir Code Kitchen 6 11.02.10 15:06
Reihenfolge der Komponenten beim PC Zusammenbau CDW Programmieraufgaben 2 24.12.08 20:22
Reihenfolge der via DHCP zugewiesenen DNS-Server bitmuncher Windows 12 20.08.07 11:07
Reihenfolge in GB-Einträgen zeitlich sortieren tine (Web-) Design und webbasierte Sprachen 16 18.02.06 15:45
SCSI Boot Reihenfolge Javanoth Hardware Probleme 13 22.08.03 20:47


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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61