static string ScanSignal( Antenna a )
public static void Main()
Antenna a = new Antenna();
string message = ScanSignal( a );
int validMessage = a.ValidateMessage( message );
Console.WriteLine( string.Format( "Message received in {0} time steps.", validMessage ) );
Console.WriteLine( message );
Console.WriteLine( "Unable to parse message" );
Console.WriteLine( message );
public class Antenna { private const int mpf = 1; private const int Mpf = 4000; private int cq = 0; private int ty = 0; private int amf = 1; private int aMf = 4000; private int mq = 1; private int Mq = 4000; private float fr = .05f; private float sr = .1f; private float tr = .15f; private float ftr = .2f; private int sps = 0; private bool vq = false; private string mfm = "{0}{1}{2}"; private string fm; private string _ = "RVJUSC0+QkFDRTogVHJhbnNtaXR0aW5nIG9uIEJBQ0UgZnJlcS4="; private string __ = "QkFDRQ=="; private string ___ = "Q29udGFjdCBsaWdodA=="; private string ____ = "Xy5f"; private bool _____; private string ______; private Random random; public Antenna() { random = new Random( 7201969 ); _____ = true; ______ = d( "Ll8u" ); mq = random.Next( mpf, mpf + 5 ); Mq = random.Next( Mpf - 5, Mpf ); ty = random.Next( mq, Mq ); fm = string.Format( mfm, ______, d( _ ), ______ ); } public int GetMinFrequency() { return amf; } public int GetMaxFrequency() { return aMf; } public float Tune( int newFrequency ) { sps++; if ( newFrequency >= mq && newFrequency <= Mq ) { cq = newFrequency; vq = true; } else { if ( newFrequency == Convert.ToUInt32( d( __ ), 16 ) ) { _____ = false; ty = cq = newFrequency; sps = 0; ______ = d( ____ ); fm = string.Format( mfm, ______, d( ___ ), ______ ); vq = true; } vq = false; } return SignalStrength(); } public char Listen() { sps++; if ( !vq ) { return _[random.Next( 0, _.Length - 1 )]; } float delta = Math.Abs( 1 - SignalStrength() ); if ( delta == 0 ) { return GetNextMessageCharacter(); } else if ( delta <= fr ) { return 'M'; } else if ( delta <= sr ) { return 'm'; } else if ( delta <= tr ) { return '-'; } else if ( delta <= ftr ) { return '.'; } else { return ' '; } } public int ValidateMessage( string msg ) { if ( msg == d( _ ) ) { return sps; } else { return 0; } } public string GetMessageDelimiter() { return ______; } private char GetNextMessageCharacter() { return fm[sps % fm.Length]; } private float SignalStrength() { return 1 - ( Math.Abs( cq - ty ) / ( float )( Mq - mq ) ); } private string e( string str ) { return Convert.ToBase64String( Encoding.UTF8.GetBytes( str ) ); } private string d( string str ) { return Encoding.UTF8.GetString( Convert.FromBase64String( str ) ); } }