Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Advastore Coding Dojo
# Advastore Coding Dojo

Herzlich Willkommen in unserem Coding Dojo,
hiermit möchten wie euch einige Übungsaufgaben an die Hand geben, damit ihr eure Fähigkeiten weiterhin erprobt, verbessert und vertieft.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<Application x:Class="LangtonAntProject.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:LangtonAntProject"
StartupUri="MainWindow.xaml">
<Application.Resources>

</Application.Resources>
</Application>
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;

namespace LangtonAntProject
{
/// <summary>
/// Interaktionslogik für "App.xaml"
/// </summary>
public partial class App : Application
{
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace LangtonAntProject
{
public class LangtonAnt
{
private int gridSize;
private int[,] grid;
private Direction startDirection;
private int startPosition_X;
private int startPosition_Y;
private int iterationCount;
public LangtonAnt(int gridSize, Direction startDirection, int startPosition_X, int startPosition_Y, int iterationCount)
{
this.gridSize = gridSize;
this.startDirection = startDirection;

grid = new int[this.gridSize, this.gridSize];

this.startPosition_X = startPosition_X;
this.startPosition_Y = startPosition_Y;
this.iterationCount = iterationCount;

//grid initialize
for (int i=0; i < this.gridSize; i++)
{
for(int j=0; j < this.gridSize; j++)
{
grid[i, j] = Convert.ToInt32(Color.w);
}
}
}
//do all iterations and save result match fields to a file
public string Start()
{
if (!Directory.Exists(@"..\..\Output"))
{
Directory.CreateDirectory(@"..\..\Output");
}
var path = @"..\..\Output\Result.txt";

int currentPosition_x = this.startPosition_X;
int currentPosition_y = this.startPosition_Y;
Direction currentDirection = this.startDirection;

StringBuilder matchField = new StringBuilder();

for (var i = 0; i < iterationCount; i++)
{

if (grid[currentPosition_x, currentPosition_y] == (int)Color.s)
{
grid[currentPosition_x, currentPosition_y] = (int)Color.w;

TurnToLeft(ref currentDirection, ref currentPosition_x, ref currentPosition_y);

}
else
{
grid[currentPosition_x, currentPosition_y] = (int)Color.s;

TurnToRight(ref currentDirection, ref currentPosition_x, ref currentPosition_y);

}


//save grid values
for (int x = 0; x < gridSize; x++)
{
for (int y = 0; y < gridSize; y++)
{
if (x == currentPosition_x && y == currentPosition_y) matchField.Append(currentDirection.ToString());
var color = Enum.Parse(typeof(Color), grid[x, y].ToString());

matchField.Append(color.ToString()).Append(",");


}
}
matchField.AppendLine();
}

//write the current match field to file
using (StreamWriter stream = new StreamWriter(path,false))
{
stream.Write(matchField.ToString());
}
return path;
}

private void TurnToRight(ref Direction direction, ref int currentPosition_x, ref int currentPosition_y)
{
switch (direction)
{
case Direction.n:
direction = Direction.o;
currentPosition_x++;
break;
case Direction.o:
direction = Direction.s;
currentPosition_y++;
break;
case Direction.s:
direction = Direction.w;
currentPosition_x = currentPosition_x + gridSize - 1;
break;
case Direction.w:
direction = Direction.n;
currentPosition_y = currentPosition_y + gridSize - 1;
break;
}

currentPosition_x = currentPosition_x % gridSize;
currentPosition_y = currentPosition_y % gridSize;
}
private void TurnToLeft(ref Direction direction, ref int currentPosition_x, ref int currentPosition_y)
{
switch (direction)
{
case Direction.n:
direction = Direction.w;
currentPosition_x = currentPosition_x + gridSize - 1;
break;
case Direction.w:
direction = Direction.s;
currentPosition_y++;
break;
case Direction.s:
direction = Direction.o;
currentPosition_x++;
break;
case Direction.o:
direction = Direction.n;
currentPosition_y= currentPosition_y+gridSize-1;
break;
}
currentPosition_x = currentPosition_x % gridSize;
currentPosition_y = currentPosition_y % gridSize;
}
}

public enum Direction
{
n, o, s, w

}
public enum Color
{
s, w
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{74C817F8-B984-41E2-AD2C-9D7C849CE46E}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>LangtonAmeiseProject</RootNamespace>
<AssemblyName>LangtonAmeiseProject</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<WarningLevel>4</WarningLevel>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Xml" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xaml">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
<Reference Include="WindowsBase" />
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
<Page Include="MainWindow.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="LangtonAnt.cs" />
<Compile Include="MainWindow.xaml.cs">
<DependentUpon>MainWindow.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<Folder Include="Output\" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<Window x:Class="LangtonAntProject.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:LangtonAntProject"
mc:Ignorable="d"
Title="Langton Ameise" Height="500" Width="800" Background="#FFDDDDDD" >
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition Height="50"></RowDefinition>
<RowDefinition ></RowDefinition>
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock >Kantenlänge:</TextBlock>
<TextBox Grid.Row="1" Grid.Column="0" Name="GridSize" PreviewTextInput="NumberValidationTextBox">11</TextBox>

<TextBlock Grid.Row="0" Grid.Column="1">Startposition x:</TextBlock>
<TextBox Grid.Row="1" Grid.Column="1" Name="StartPosition_x" PreviewTextInput="NumberValidationTextBox">6</TextBox>

<TextBlock Grid.Row="0" Grid.Column="2">Startposition y:</TextBlock>
<TextBox Grid.Row="1" Grid.Column="2" Name="StartPosition_y" PreviewTextInput="NumberValidationTextBox">6</TextBox>

<TextBlock Grid.Row="0" Grid.Column="3">Blickrichtung:</TextBlock>
<TextBox Grid.Row="1" Grid.Column="3" Name="Direction">w</TextBox>

<TextBlock Grid.Row="0" Grid.Column="4">Anzahl der Züge</TextBlock>
<TextBox Grid.Row="1" Grid.Column="4" Name="IterationCount" PreviewTextInput="NumberValidationTextBox">10</TextBox>

<TextBlock Grid.Row="0" Grid.Column="5">Geschwindigkeit</TextBlock>
<TextBox Grid.Row="1" Grid.Column="5" Name="Speed" PreviewTextInput="NumberValidationTextBox">90</TextBox>

</Grid>
<Grid Grid.Row="1" Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>

<Button Grid.Column="0" Width="100" Click="InitGrid">Initialisieren</Button>

<Button Grid.Column="1" Click="StartDrawing" Width="100">Start</Button>

</Grid>
<Canvas Name="Canvas" Grid.Row="3" ></Canvas>
</Grid>
</Window>
Loading