Ejemplo n.º 1
0
        object PartOne(string input)
        {
            var painted   = new HashSet <Point>();
            var sif       = new Sif();
            var direction = Direction.Up;
            var location  = new Point(0, 0);
            var vm        = new IntCode(input);

            while (vm.State != ProgramState.Finished)
            {
                var currentColor = sif.GetColor(location);
                currentColor = currentColor == Sif.Color.Transparent ? Sif.Color.Black : currentColor;
                vm.ProvideInput((long)currentColor);
                vm.RunToNextInputOrFinished();

                // Get the output (if any)
                if (vm.HasOutput)
                {
                    var color = (Sif.Color)vm.ReadOutput();
                    sif.SetColor(location, color);
                    painted.Add(location);

                    var turn = vm.ReadOutput();
                    if (turn == 0)
                    {
                        // Turn left
                        direction = (Direction)(((int)direction - 1 + 4) % 4);
                    }
                    else
                    {
                        // Turn right
                        direction = (Direction)(((int)direction + 1) % 4);
                    }

                    switch (direction)
                    {
                    case Direction.Up:
                        location = new Point(location.X, location.Y - 1);
                        break;

                    case Direction.Right:
                        location = new Point(location.X + 1, location.Y);
                        break;

                    case Direction.Down:
                        location = new Point(location.X, location.Y + 1);
                        break;

                    case Direction.Left:
                        location = new Point(location.X - 1, location.Y);
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }
            }

            return(painted.Count);
        }
        public override void onCreate(Bundle savedInstanceState)
        {
            base.onCreate(savedInstanceState);

            ContentView = R.layout.general_purpose_image_filter;

            Sif imageFilterSdk = new Sif();

            try
            {
                imageFilterSdk.initialize(this);
            }
            catch (Exception e1)
            {
                // TODO Auto-generated catch block
                Console.WriteLine(e1.ToString());
                Console.Write(e1.StackTrace);
            }

            mContext = this;

            mImageFilterBtn = (Button)findViewById(R.id.imagefilter);
            mImageFilterBtn.OnClickListener     = imagefilterBtnClickListener;
            mBackgroundImageBtn                 = (Button)findViewById(R.id.backgroundimage);
            mBackgroundImageBtn.OnClickListener = backgroundimageBtnClickListener;
            mFilterLevelBtn = (Button)findViewById(R.id.filterlevel);
            mFilterLevelBtn.OnClickListener = filterlevelBtnClickListener;

            mBackgroudnImageView = (ImageView)findViewById(R.id.imageview_background);

            arrayAdapter = ArrayAdapter.createFromResource(this, R.array.imageoperation, R.layout.general_purpose_filter_list);

            filterlistView            = (ListView)findViewById(R.id.filter_list);
            filterlistView.Adapter    = arrayAdapter;
            filterlistView.ChoiceMode = ListView.CHOICE_MODE_SINGLE;

            // Don't show list view
            bShowListView             = false;
            filterlistView.Visibility = View.GONE;

            // initial background
            bmBackgroundBitmap = BitmapFactory.decodeResource(Resources, R.drawable.baby);
            mBackgroudnImageView.ImageBitmap = bmBackgroundBitmap;

            // getting Get the original image
            // Bitmap backgroundBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.baby);
            // Bitmap filteredBitmap = SifImageFilter.filterImageCopy(backgroundBitmap, SifImageFilter.FILTER_SEPIA,
            // SifImageFilter.LEVEL_MEDIUM);
            // Apply image filtering

            filterlistView.OnItemClickListener = new OnItemClickListenerAnonymousInnerClassHelper(this);
        }
		public override void onCreate(Bundle savedInstanceState)
		{
			base.onCreate(savedInstanceState);

			ContentView = R.layout.general_purpose_image_filter;

			Sif imageFilterSdk = new Sif();
			try
			{
				imageFilterSdk.initialize(this);
			}
			catch (Exception e1)
			{
				// TODO Auto-generated catch block
				Console.WriteLine(e1.ToString());
				Console.Write(e1.StackTrace);
			}

			mContext = this;

			mImageFilterBtn = (Button) findViewById(R.id.imagefilter);
			mImageFilterBtn.OnClickListener = imagefilterBtnClickListener;
			mBackgroundImageBtn = (Button) findViewById(R.id.backgroundimage);
			mBackgroundImageBtn.OnClickListener = backgroundimageBtnClickListener;
			mFilterLevelBtn = (Button) findViewById(R.id.filterlevel);
			mFilterLevelBtn.OnClickListener = filterlevelBtnClickListener;

			mBackgroudnImageView = (ImageView) findViewById(R.id.imageview_background);

			arrayAdapter = ArrayAdapter.createFromResource(this, R.array.imageoperation, R.layout.general_purpose_filter_list);

			filterlistView = (ListView) findViewById(R.id.filter_list);
			filterlistView.Adapter = arrayAdapter;
			filterlistView.ChoiceMode = ListView.CHOICE_MODE_SINGLE;

			// Don't show list view
			bShowListView = false;
			filterlistView.Visibility = View.GONE;

			// initial background
			bmBackgroundBitmap = BitmapFactory.decodeResource(Resources, R.drawable.baby);
			mBackgroudnImageView.ImageBitmap = bmBackgroundBitmap;

			// getting Get the original image
			// Bitmap backgroundBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.baby);
			// Bitmap filteredBitmap = SifImageFilter.filterImageCopy(backgroundBitmap, SifImageFilter.FILTER_SEPIA,
			// SifImageFilter.LEVEL_MEDIUM);
			// Apply image filtering

			filterlistView.OnItemClickListener = new OnItemClickListenerAnonymousInnerClassHelper(this);
		}
Ejemplo n.º 4
0
        object PartTwo(string input)
        {
            var layersString = new List <string>();

            for (var index = 0; index < input.Length; index += 25 * 6)
            {
                layersString.Add(input.Substring(index, 25 * 6));
            }

            var finalImage = new StringBuilder();

            for (var index = 0; index < 25 * 6; index++)
            {
                var layersForThisPixel = layersString.Select(s => s[index]).ToArray();
                var color = layersForThisPixel.First(c => c != '2');
                finalImage.Append(color);
            }

            var text = finalImage.ToString();

            var sif = new Sif();

            for (var l = 0; l < 6; l++)
            {
                var line = text.Substring(25 * l, 25);
                for (var ci = 0; ci < 25; ci++)
                {
                    sif.SetColor(new Point(ci, l), line[ci] == '0' ? Sif.Color.Black : Sif.Color.White);
                }
            }

            sif.Draw(Console.Out);
            return(sif.OCR());

            //for (var l = 0; l < 6; l++)
            //{
            //    var line = text.Substring(25 * l, 25);
            //    var t = line.Replace('0', ' ');
            //    t = t.Replace('1', '█');
            //    Console.WriteLine(t);
            //}
            //
            //return "ZYBLH";
        }
Ejemplo n.º 5
0
        object PartTwo(string input)
        {
            var sif       = new Sif();
            var direction = Direction.Up;
            var location  = new Point(0, 0);

            sif.SetColor(location, Sif.Color.White);
            var vm = new IntCode(input);

            while (vm.State != ProgramState.Finished)
            {
                var currentColor = sif.GetColor(location);
                var vmInput      = currentColor == Sif.Color.White ? 1 : 0;
                vm.ProvideInput(vmInput);
                vm.RunToNextInputOrFinished();

                // Get the output (if any)
                if (vm.HasOutput)
                {
                    var color = (Sif.Color)vm.ReadOutput();
                    sif.SetColor(location, color);

                    var turn = vm.ReadOutput();
                    if (turn == 0)
                    {
                        // Turn left
                        direction = (Direction)(((int)direction - 1 + 4) % 4);
                    }
                    else
                    {
                        // Turn right
                        direction = (Direction)(((int)direction + 1) % 4);
                    }

                    switch (direction)
                    {
                    case Direction.Up:
                        location = new Point(location.X, location.Y - 1);
                        break;

                    case Direction.Right:
                        location = new Point(location.X + 1, location.Y);
                        break;

                    case Direction.Down:
                        location = new Point(location.X, location.Y + 1);
                        break;

                    case Direction.Left:
                        location = new Point(location.X - 1, location.Y);
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }
            }

            // Gah. Should've trusted my instincts and made the SIF OCR.
            sif.Draw(Console.Out);
            return("JZPJRAGJ");
        }