Skip to content

C# Programming: The Pen Class (Canterbury) Mystery Cache

Hidden : 5/30/2012
Difficulty:
3 out of 5
Terrain:
1.5 out of 5

Size: Size:   micro (micro)

Join now to view geocache location details. It's free!

Watch

How Geocaching Works

Please note Use of geocaching.com services is subject to the terms and conditions in our disclaimer.

Geocache Description:

A lot of people I have met have asked me what I do in the small amount of time between geocaching and sleeping, and I tell them I study Software Development. Then they go on to ask why I haven't made a programming puzzle cache... well here it is! (You're going to wish you hadn't asked for it now). I might even come up with a couple more if I get around to it.

From Wikipedia:
C# (pronounced see sharp) is a multi-paradigm programming language encompassing strong typing, imperative, declarative, functional, generic, object-oriented (class-based), and component-oriented programming disciplines. It was developed by Microsoft within its .NET initiative and later approved as a standard by Ecma and ISO. C# is one of the programming languages designed for the Common Language Infrastructure.
C# is intended to be a simple, modern, general-purpose, object-oriented programming language. Its development team is led by Anders Hejlsberg. The most recent version is C# 4.0, which was released on April 12, 2010.

The following is a very simple program written in C#, with one purpose, to lead you to a geocache. It is in no way the most efficient way of producing the same output but the efficient way would have been a dawdle. If you have the correct tools, ie. the ones I use, or something similar, then this too will be nice and simple. If you don't have the tools, you can either find them online, or get a bit friendlier with google, they have all the info you need. 

NOTE: Puzzle CAN be solved without any need to download and/or install software




Code:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Geocache {
    public partial class Geocache : Form {
        public Geocache() {
            InitializeComponent();
        }

        private void Geocache_Load(object sender, EventArgs e) {
            Graphics g = this.CreateGraphics();
            Pen p = new Pen(Color.Black, 5);

            g.DrawLine(p, 30, 30, 35, 30);
            g.DrawLine(p, 40, 30, 45, 30);
            g.DrawLine(p, 50, 30, 55, 30);
            g.DrawLine(p, 80, 30, 100, 30);
            g.DrawLine(p, 105, 30, 125, 30);
            g.DrawLine(p, 130, 30, 150, 30);
            g.DrawLine(p, 175, 30, 180, 30);
            g.DrawLine(p, 185, 30, 190, 30);
            g.DrawLine(p, 195, 30, 215, 30);
            g.DrawLine(p, 240, 30, 260, 30);
            g.DrawLine(p, 285, 30, 290, 30);
            g.DrawLine(p, 295, 30, 300, 30);
            g.DrawLine(p, 305, 30, 310, 30);
            g.DrawLine(p, 315, 30, 320, 30);
            g.DrawLine(p, 345, 30, 350, 30);
            g.DrawLine(p, 355, 30, 360, 30);
            g.DrawLine(p, 365, 30, 370, 30);
            g.DrawLine(p, 375, 30, 380, 30);
            g.DrawLine(p, 385, 30, 405, 30);
            g.DrawLine(p, 430, 30, 435, 30);
            g.DrawLine(p, 440, 30, 445, 30);
            g.DrawLine(p, 450, 30, 455, 30);
            g.DrawLine(p, 460, 30, 480, 30);
            g.DrawLine(p, 485, 30, 505, 30);
            g.DrawLine(p, 530, 30, 535, 30);
            g.DrawLine(p, 540, 30, 545, 30);
            g.DrawLine(p, 550, 30, 555, 30);
            g.DrawLine(p, 560, 30, 580, 30);
            g.DrawLine(p, 585, 30, 605, 30);
            g.DrawLine(p, 630, 30, 650, 30);
            g.DrawLine(p, 655, 30, 675, 30);
            g.DrawLine(p, 680, 30, 700, 30);
            g.DrawLine(p, 705, 30, 725, 30);
            g.DrawLine(p, 730, 30, 750, 30);
            g.DrawLine(p, 775, 30, 780, 30);
            g.DrawLine(p, 785, 30, 805, 30);
            g.DrawLine(p, 810, 30, 815, 30);
            g.DrawLine(p, 820, 30, 840, 30);
            g.DrawLine(p, 845, 30, 850, 30);
            g.DrawLine(p, 855, 30, 875, 30);
            g.DrawLine(p, 900, 30, 905, 30);
            g.DrawLine(p, 910, 30, 915, 30);
            g.DrawLine(p, 920, 30, 925, 30);
            g.DrawLine(p, 930, 30, 935, 30);
            g.DrawLine(p, 940, 30, 945, 30);
            g.DrawLine(p, 970, 30, 990, 30);
            g.DrawLine(p, 995, 30, 1015, 30);
            g.DrawLine(p, 1020, 30, 1040, 30);
            g.DrawLine(p, 1045, 30, 1065, 30);
            g.DrawLine(p, 1070, 30, 1075, 30);
            g.DrawLine(p, 1100, 30, 1120, 30);
            g.DrawLine(p, 1125, 30, 1145, 30);
            g.DrawLine(p, 1150, 30, 1170, 30);
            g.DrawLine(p, 1175, 30, 1180, 30);
            g.DrawLine(p, 1185, 30, 1190, 30);
            g.DrawLine(p, 30, 60, 35, 60);
            g.DrawLine(p, 60, 60, 65, 60);
            g.DrawLine(p, 70, 60, 90, 60);
            g.DrawLine(p, 115, 60, 120, 60);
            g.DrawLine(p, 125, 60, 130, 60);
            g.DrawLine(p, 135, 60, 140, 60);
            g.DrawLine(p, 165, 60, 185, 60);
            g.DrawLine(p, 210, 60, 215, 60);
            g.DrawLine(p, 220, 60, 240, 60);
            g.DrawLine(p, 245, 60, 265, 60);
            g.DrawLine(p, 270, 60, 290, 60);
            g.DrawLine(p, 295, 60, 315, 60);
            g.DrawLine(p, 340, 60, 360, 60);
            g.DrawLine(p, 365, 60, 385, 60);
            g.DrawLine(p, 390, 60, 395, 60);
            g.DrawLine(p, 400, 60, 405, 60);
            g.DrawLine(p, 410, 60, 415, 60);
            g.DrawLine(p, 440, 60, 445, 60);
            g.DrawLine(p, 450, 60, 455, 60);
            g.DrawLine(p, 460, 60, 480, 60);
            g.DrawLine(p, 485, 60, 505, 60);
            g.DrawLine(p, 510, 60, 530, 60);
            g.DrawLine(p, 555, 60, 560, 60);
            g.DrawLine(p, 565, 60, 570, 60);
            g.DrawLine(p, 575, 60, 580, 60);
            g.DrawLine(p, 585, 60, 605, 60);
            g.DrawLine(p, 610, 60, 630, 60);
            g.DrawLine(p, 655, 60, 660, 60);
            g.DrawLine(p, 665, 60, 670, 60);
            g.DrawLine(p, 675, 60, 680, 60);
            g.DrawLine(p, 685, 60, 705, 60);
            g.DrawLine(p, 710, 60, 730, 60);
            g.DrawLine(p, 755, 60, 760, 60);
            g.DrawLine(p, 765, 60, 785, 60);
            g.DrawLine(p, 790, 60, 795, 60);
            g.DrawLine(p, 800, 60, 820, 60);
            g.DrawLine(p, 825, 60, 830, 60);
            g.DrawLine(p, 835, 60, 855, 60);
            g.DrawLine(p, 880, 60, 900, 60);
            g.DrawLine(p, 905, 60, 925, 60);
            g.DrawLine(p, 930, 60, 950, 60);
            g.DrawLine(p, 955, 60, 975, 60);
            g.DrawLine(p, 980, 60, 985, 60);
            g.DrawLine(p, 1010, 60, 1030, 60);
            g.DrawLine(p, 1035, 60, 1055, 60);
            g.DrawLine(p, 1060, 60, 1065, 60);
            g.DrawLine(p, 1070, 60, 1075, 60);
            g.DrawLine(p, 1080, 60, 1085, 60);
            g.DrawLine(p, 1110, 60, 1115, 60);
            g.DrawLine(p, 1120, 60, 1140, 60);
            g.DrawLine(p, 1145, 60, 1165, 60);
            g.DrawLine(p, 1170, 60, 1190, 60);
            g.DrawLine(p, 1195, 60, 1215, 60);
            g.DrawLine(p, 30, 90, 35, 90);
            g.DrawLine(p, 40, 90, 45, 90);
            g.DrawLine(p, 50, 90, 70, 90);
            g.DrawLine(p, 75, 90, 80, 90);
            g.DrawLine(p, 105, 90, 125, 90);
            g.DrawLine(p, 130, 90, 150, 90);
            g.DrawLine(p, 155, 90, 175, 90);
            g.DrawLine(p, 200, 90, 205, 90);
            g.DrawLine(p, 210, 90, 230, 90);
            g.DrawLine(p, 235, 90, 240, 90);
            g.DrawLine(p, 265, 90, 285, 90);
            g.DrawLine(p, 290, 90, 295, 90);
            g.DrawLine(p, 300, 90, 320, 90);
            g.DrawLine(p, 345, 90, 365, 90);
            g.DrawLine(p, 370, 90, 390, 90);
            g.DrawLine(p, 395, 90, 415, 90);
            g.DrawLine(p, 440, 90, 445, 90);
            g.DrawLine(p, 450, 90, 455, 90);
            g.DrawLine(p, 460, 90, 480, 90);
            g.DrawLine(p, 485, 90, 490, 90);
            g.DrawLine(p, 515, 90, 535, 90);
            g.DrawLine(p, 560, 90, 565, 90);
            g.DrawLine(p, 570, 90, 590, 90);
            g.DrawLine(p, 595, 90, 600, 90);
            g.DrawLine(p, 625, 90, 630, 90);
            g.DrawLine(p, 655, 90, 660, 90);
            g.DrawLine(p, 685, 90, 690, 90);
            g.DrawLine(p, 695, 90, 715, 90);
            g.DrawLine(p, 740, 90, 760, 90);
            g.DrawLine(p, 785, 90, 805, 90);
            g.DrawLine(p, 810, 90, 830, 90);
            g.DrawLine(p, 835, 90, 840, 90);
            g.DrawLine(p, 865, 90, 870, 90);
            g.DrawLine(p, 875, 90, 895, 90);
            g.DrawLine(p, 900, 90, 905, 90);
            g.DrawLine(p, 930, 90, 950, 90);
            g.DrawLine(p, 955, 90, 975, 90);
            g.DrawLine(p, 980, 90, 1000, 90);
            g.DrawLine(p, 1025, 90, 1030, 90);
            g.DrawLine(p, 1035, 90, 1040, 90);
            g.DrawLine(p, 1045, 90, 1065, 90);
            g.DrawLine(p, 1090, 90, 1110, 90);
            g.DrawLine(p, 1115, 90, 1120, 90);
            g.DrawLine(p, 1145, 90, 1165, 90);
            g.DrawLine(p, 1170, 90, 1175, 90);
            g.DrawLine(p, 1180, 90, 1185, 90);
            g.DrawLine(p, 1210, 90, 1215, 90);
            g.DrawLine(p, 1220, 90, 1240, 90);
            g.DrawLine(p, 1245, 90, 1250, 90);
            g.DrawLine(p, 1255, 90, 1260, 90);
            g.DrawLine(p, 1285, 90, 1290, 90);
            g.DrawLine(p, 1315, 90, 1320, 90);
            g.DrawLine(p, 1325, 90, 1330, 90);
            g.DrawLine(p, 1335, 90, 1340, 90);
            g.DrawLine(p, 1345, 90, 1365, 90);
            g.DrawLine(p, 1390, 90, 1395, 90);
            g.DrawLine(p, 1420, 90, 1425, 90);
            g.DrawLine(p, 1430, 90, 1450, 90);
            g.DrawLine(p, 1455, 90, 1460, 90);
            g.DrawLine(p, 1465, 90, 1470, 90);
            g.DrawLine(p, 30, 120, 35, 120);
            g.DrawLine(p, 40, 120, 45, 120);
            g.DrawLine(p, 50, 120, 70, 120);
            g.DrawLine(p, 75, 120, 95, 120);
            g.DrawLine(p, 100, 120, 120, 120);
            g.DrawLine(p, 145, 120, 165, 120);
            g.DrawLine(p, 170, 120, 190, 120);
            g.DrawLine(p, 195, 120, 215, 120);
            g.DrawLine(p, 220, 120, 240, 120);
            g.DrawLine(p, 245, 120, 265, 120);
            g.DrawLine(p, 290, 120, 310, 120);
            g.DrawLine(p, 315, 120, 335, 120);
            g.DrawLine(p, 340, 120, 360, 120);
            g.DrawLine(p, 365, 120, 385, 120);
            g.DrawLine(p, 390, 120, 410, 120);
            g.DrawLine(p, 435, 120, 455, 120);
            g.DrawLine(p, 460, 120, 480, 120);
            g.DrawLine(p, 505, 120, 510, 120);
            g.DrawLine(p, 515, 120, 535, 120);
            g.DrawLine(p, 540, 120, 545, 120);
            g.DrawLine(p, 550, 120, 555, 120);
            g.DrawLine(p, 580, 120, 585, 120);
            g.DrawLine(p, 590, 120, 595, 120);
            g.DrawLine(p, 600, 120, 605, 120);
            g.DrawLine(p, 630, 120, 635, 120);
            g.DrawLine(p, 640, 120, 645, 120);
            g.DrawLine(p, 670, 120, 675, 120);
            g.DrawLine(p, 680, 120, 685, 120);
            g.DrawLine(p, 690, 120, 695, 120);
            g.DrawLine(p, 720, 120, 740, 120);
            g.DrawLine(p, 765, 120, 770, 120);
            g.DrawLine(p, 795, 120, 815, 120);
            g.DrawLine(p, 820, 120, 840, 120);
            g.DrawLine(p, 865, 120, 870, 120);
            g.DrawLine(p, 875, 120, 895, 120);
        }
    }
}


Additional Hints (Decrypt)

Anab unatvat orgjrra xarr naq jnvfg urvtug

Decryption Key

A|B|C|D|E|F|G|H|I|J|K|L|M
-------------------------
N|O|P|Q|R|S|T|U|V|W|X|Y|Z

(letter above equals below, and vice versa)