2. Fibonacci series, swapping two variables, finding maximum/minimum among a list of numbers. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace lrn2Csharp2 { class Program { static void Main( string[ ] args ) { int fibs = 21; int[ ] fib_series = new int[ fibs ]; Console.WriteLine( "Outputing Fib 0 through " + fibs ); for ( int i = 0; i < fib_series.Length; i++ ) { fib_series[ i ] = fibonacci( i ); } printArray( fib_series ); Console.WriteLine( "" ); Console.WriteLine( "Max in Fib Series: " + max( fib_series ) ); Console.WriteLine( "Min in Fib Series: " + min( fib_series ) ); Console.WriteLine( "Swapping front with end: " ); swap<int>( ref fib_series[ 0 ], ref fib_series[ fib_series.Length - 1 ] ); printArray( fib_series ); Console.WriteLine( "" ); Console.WriteLine( "Press esc to exit." ); while ( !keyPressHandler( Console.ReadKey( true ) ) ) { Thread.Sleep( 250 ); /* no op */ } } static void swap<T>( ref T lhs, ref T rhs ) { T temp; temp = lhs; lhs = rhs; rhs = temp; } public static int fibonacci( int n ) { if ( n <= 1 ) { return n; } else { return fibonacci( n - 1 ) + fibonacci( n - 2 ); } } public static int max( int[ ] n ) { int max = n[ 0 ]; for ( int _i = 0; _i < n.Length; _i++ ) { if ( n[ _i ] > max ) max = n[ _i ]; } return max; } public static int min( int[ ] n ) { int min = n[ 0 ]; for ( int _i = 0; _i < n.Length; _i++ ) { if ( n[ _i ] < min ) min = n[ _i ]; } return min; } public static void printArray( int[ ] n ) { for ( int _i = 0; _i < n.Length; _i++ ) { Console.Write( n[ _i ] + " " ); } } protected static Boolean keyPressHandler( ConsoleKeyInfo input ) { if ( input.Key == ConsoleKey.Escape ) return true; return false; } } }

posted by dharh 12:47 AM Nov 29th, 2009

It's been a while since I've made an actual post, but I felt the urge. I do alot of programming (many different languages), so after I read this interview I thought i'd share it.

posted by dharh 1:05 PM Aug 7th, 2009


posted by dharh 9:01 AM May 13th, 2008

As you can see the Java implementation of Step 1 of 15 Exercises for Learning a new Programming Language was more complicated than the C# implementation. This was largely due to one factor. You can't poll whether someone is typing from the console in Java.

The second problem is that you can't use a KeyEvent handler in the console, which would the second easiest solution to attempt.

Finally a third problem is that by using an event handler you essentially need to use threading so that the loop doesn't interfere with the handler and you are able to interrupt properly.

If there are better solutions I'd be very interested to see them.

package learn2Java1; import java.awt.BorderLayout; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; import javax.swing.JTextArea; public class Program extends JFrame implements KeyListener { private JTextArea displayArea; private static final long serialVersionUID = 1; public static void main(String[] args) { javax.swing.SwingUtilities.invokeLater( new Runnable( ){ public void run( ) { createAndShowGUI( ); } }); } public Program( String name ) { super( name ); } private static void createAndShowGUI( ) { Program frame = new Program( "Press ESC to exit program." ); frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); frame.addComponentsToPane( ); frame.pack( ); frame.setVisible( true ); Thread t = new Thread( new MessageLoop( frame ) ); t.start( ); } private void addComponentsToPane( ) { displayArea = new JTextArea( 0 ); displayArea.setEditable( false ); displayArea.addKeyListener( this ); getContentPane( ).add( displayArea, BorderLayout.CENTER ); } public void keyPressed(KeyEvent ke) { checkKey( ke, "KeyPressed: " ); } public void keyReleased(KeyEvent ke) { checkKey( ke, "KeyReleased: " ); } public void keyTyped(KeyEvent ke) { checkKey( ke, "KeyTyped: " ); } private void checkKey( KeyEvent ke, String message ) { System.out.println( message + ke.getKeyCode() ); if ( ke.getID() != KeyEvent.KEY_TYPED && ke.getKeyCode() == KeyEvent.VK_ESCAPE ) System.exit( 0 ); } public void updateArea( String text ) { displayArea.setText( text ); } private static class MessageLoop implements Runnable { Program messageSpace; public MessageLoop( Program thisFrame ) { messageSpace = thisFrame; } public void run( ) { for ( int i = 0; ; i++ ) { messageSpace.updateArea( i + " " ); try { Thread.sleep( 250 ); } catch ( InterruptedException ie ) { } } } } }

posted by dharh 7:15 PM Feb 10th, 2008

1. Display series of numbers (1,2,3,4, 5....etc) in an infinite loop. The program should quit if someone hits a specific key (Say ESCAPE key). using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace lrn2CSharp1 { class Program { static void Main( string[ ] args ) { for ( int i = 0; ; i++ ) { if ( Console.KeyAvailable && keyPressHandler( Console.ReadKey( true ) ) ) break; Console.Write( i + " " ); Thread.Sleep( 250 ); } } protected static Boolean keyPressHandler( ConsoleKeyInfo input ) { if ( input.Key == ConsoleKey.Escape ) return true; return false; } } }

posted by dharh 7:13 PM Feb 10th, 2008

So I saw this page which gives a list of 15 Exercises for Learning a new Programming Language. I thought, this could also be a good way to compare different languages. In that spirit I'm going to do just that and try to complete the list in different popular languages. To start with I will do them in C# and Java.

As it turns out I'm much less familiar with C# than Java so it will also be a learning experience as the original article had intended. You can see the progress in Programming.


posted by dharh 6:43 PM Feb 10th, 2008

function trim(str) { var str = str.replace(/^ss*/, ''), ws = /s/, i = str.length; while (ws.test(str.charAt(--i))); return str.slice(0, i + 1); }

source: http://blog.stevenlevithan.com/archives/faster-trim-javascript


posted by dharh 1:11 PM Feb 4th, 2008


« Previous 1 2 3 4 5 Next »

2024: 1
2023: 4 2 1
2022: 5 3
2011: 5 3 1
2010: 12 9 7 1
2009: 12 11 8 5
2008: 12 5 4 3 2 1
2007: 12 11 10 9 8 7 6 5 4 3 2 1
2006: 12 11 10 9 8 7 6 5 4 3 2 1
2005: 12 10 7 6
2004: 10 9 6 5 4 3 2 1