Bud fra igår...
Det er ikke sidste gang vi skal afholde en kode konkurrence som denne - sikke mange gode bud! Fantastisk folkens...
Lad os starte ud med det længste bud som kommer fra Klaus Hebsgaard
//Klaus Hebsgaard
public static string GetRandomString( int count )
{
Dictionary<int, string> entries = GetList();
StringBuilder sb = new StringBuilder();
for( int i = 0; i < count; i++ ) {
int milli = DateTime.Now.Millisecond;
string firstMilli = milli.ToString();
Thread.Sleep( 21 );
sb.Append( entries[ milli ] );
}
return sb.ToString();
}
public static Dictionary<int, string> GetList()
{
List<string> entries = new List<string>();
entries.Add( "A" );
entries.Add( "B" );
entries.Add( "C" );
entries.Add( "D" );
entries.Add( "E" );
entries.Add( "F" );
entries.Add( "G" );
entries.Add( "H" );
entries.Add( "I" );
entries.Add( "J" );
entries.Add( "K" );
entries.Add( "L" );
entries.Add( "M" );
entries.Add( "N" );
entries.Add( "O" );
entries.Add( "P" );
entries.Add( "Q" );
entries.Add( "R" );
entries.Add( "S" );
entries.Add( "T" );
entries.Add( "U" );
entries.Add( "V" );
entries.Add( "X" );
entries.Add( "Y" );
entries.Add( "Z" );
entries.Add( "Æ" );
entries.Add( "Ø" );
entries.Add( "Å" );
entries.Add( "0" );
entries.Add( "1" );
entries.Add( "2" );
entries.Add( "3" );
entries.Add( "4" );
entries.Add( "5" );
entries.Add( "6" );
entries.Add( "7" );
entries.Add( "8" );
entries.Add( "9" );
List<string> newEntries = new List<string>();
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
newEntries.AddRange( entries );
return ToDict( newEntries );
}
private static Dictionary<int, string> ToDict( List<string> list )
{
Dictionary<int, string> dict = new Dictionary<int, string>();
for( int i = 0; i < list.Count; i++ ) {
dict.Add( i, list[ i ] );
}
return dict;
}
Også tager vi dem i en lind strøm...
Brian Rasmussesn kom med følgende bud:
//Brian Rasmussen
public static string RandomString( uint length )
{
var buffer = new char[ length ];
var timer = new Stopwatch();
timer.Start();
for( var i = 0; i < length; i++ ) {
buffer[ i ] = (char)( 32 + timer.ElapsedTicks % ( length + i ) );
}
return new string( buffer );
}
Også skal vi lige forbi Pernille Poulsen der kom med dette bud:
static string RandWithoutRand( Int32 length )
{
StringBuilder sb = new StringBuilder();
for( Int32 i = 0; i <= length; i++ ) {
//Et "tilfældigt" hex-tal trylles frem:
string hex = Guid.NewGuid().ToString().Substring( 1, 2 );
//Hexværdien udtrykt i int 16. Tager modulus 25 og lægger 97 til for at få acsii værdierne 97-122 (små bogstaver)
int hexvalue = ( Convert.ToInt32( hex, 16 ) % 25 ) + 97;
// Det tilsvarende tegn
char charValue = (char)hexvalue;
sb.Append( charValue );
}
//og taaa-naaa en tilfældig streng:
return sb.ToString();
// <:O) God jul
}
Niklas Petersen har skrevet følgende klasse:
//Niklas Petersen
public class RandomString
{
private const uint a = 1664525;
private const uint c = 1013904223;
private const uint m = uint.MaxValue;
private uint next;
public RandomString()
{
next = (uint)Environment.TickCount;
}
private double Rand()
{
/* Linear congruential generator */
next = next * a + c % m;
return next * ( 1.0 / m );
}
public string GetText( int length )
{
string t = string.Empty;
for( int i = 0; i < length; i++ )
t += (char)( 65 + Rand() * 25 );
return t;
}
}
Og det sidste bud Rasmus Larsen:
//Rasmus Larsen
public static string Generate( int length )
{
var result = string.Empty;
var alphabet = "abcdefghijklmnopqrstuvwxyzæøå";
// Base our randomness on time
var randomSeed = DateTime.Now.Ticks;
for( var i = 0; i < length; i++ ) {
// Generate a random number within the length of the alphabet string.
var randomNumber = (int)( randomSeed % alphabet.Length );
result += alphabet[ randomNumber ];
// "Randomize" our seed and make sure it's positive.
randomSeed *= 13;
randomSeed = Math.Abs( randomSeed );
}
// Ensure that we don't get the name number of ticks if calling
// the function repeatedly. Could use a static integer in the
// class too, but this is contained within the function.
Thread.Sleep( 1 );
return result;
}
Det er svært at sige hvem der skal vinde den her, så derfor grubler jeg lige et par timer og vender tilbage...