Created
December 9, 2022 17:19
-
-
Save mykdavies/80c5b90c13b62634c12851d2d45925ee to your computer and use it in GitHub Desktop.
AOC 2022 Day 9 flutter
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'dart:async'; | |
import 'dart:math'; | |
import 'package:flutter/material.dart'; | |
// Hack for missing `more` library | |
extension IntegerRangeExtension on int { | |
List<int> to(int end) => List.generate(end - this, (i) => i + this); | |
} | |
void main() async { | |
runApp( | |
MaterialApp( | |
debugShowCheckedModeBanner: false, | |
home: Scaffold( | |
body: Container( | |
color: const Color(0xFF15202D), | |
child: const SizedBox.expand( | |
child: Rope(), | |
), | |
), | |
), | |
), | |
); | |
} | |
class RopePainter extends CustomPainter { | |
Model model; | |
RopePainter(this.model); | |
@override | |
void paint(Canvas canvas, Size size) { | |
var scale = model.maxDim - model.minDim; | |
var color = Colors.grey[300]!; | |
for (var s in model.anySeen) { | |
drawSeed(canvas, 400.0 * (s.x - model.minDim) / scale, | |
400.0 * (s.y - model.minDim) / scale, color); | |
} | |
color = Colors.grey; | |
for (var s in model.seen) { | |
drawSeed(canvas, 400.0 * (s.x - model.minDim) / scale, | |
400.0 * (s.y - model.minDim) / scale, color); | |
} | |
color = Colors.orange; | |
for (var s in model.chain) { | |
drawSeed(canvas, 400.0 * (s.x - model.minDim) / scale, | |
400.0 * (s.y - model.minDim) / scale, color); | |
} | |
var s = model.chain.last; | |
drawSeed(canvas, 400.0 * (s.x - model.minDim) / scale, | |
400.0 * (s.y - model.minDim) / scale, Colors.red); | |
s = model.chain.first; | |
drawSeed(canvas, 400.0 * (s.x - model.minDim) / scale, | |
400.0 * (s.y - model.minDim) / scale, Colors.black); | |
} | |
@override | |
bool shouldRepaint(RopePainter oldDelegate) { | |
return true; | |
//return oldDelegate.model.chain != model.chain; | |
} | |
// Draw a small circle representing a seed centered at (x,y). | |
void drawSeed(Canvas canvas, double x, double y, Color color) { | |
final paint = Paint() | |
..strokeWidth = 2 | |
..style = PaintingStyle.fill | |
..color = color; | |
canvas.drawCircle(Offset(x, y), 2.0, paint); | |
} | |
} | |
class Rope extends StatefulWidget { | |
const Rope({super.key}); | |
@override | |
State<StatefulWidget> createState() { | |
return _RopeState(); | |
} | |
} | |
int segments = 2; | |
class _RopeState extends State<Rope> { | |
Model model; | |
late Timer _timer; | |
bool _running = false; | |
_RopeState() : model = Model(segments); | |
@override | |
Widget build(BuildContext context) { | |
return Scaffold( | |
appBar: AppBar(title: const Text("Planck rope")), | |
body: Column( | |
crossAxisAlignment: CrossAxisAlignment.center, | |
children: [ | |
Container( | |
decoration: BoxDecoration( | |
border: Border.all( | |
color: Colors.transparent, | |
), | |
), | |
child: SizedBox( | |
width: 400, | |
height: 400, | |
child: CustomPaint( | |
painter: RopePainter(model), | |
), | |
), | |
), | |
Text("Step number: ${model.nMove}"), | |
Text("Length of rope: $segments"), | |
ConstrainedBox( | |
constraints: const BoxConstraints.tightFor(width: 300), | |
child: Slider.adaptive( | |
min: 2, | |
max: 100, | |
value: segments.toDouble(), | |
onChanged: (newValue) { | |
setState(() { | |
segments = newValue.toInt(); | |
}); | |
}, | |
), | |
), | |
ElevatedButton( | |
onPressed: () { | |
toggleTimer(); | |
}, | |
child: Text(_running ? "running" : "start"), | |
), | |
], | |
), | |
); | |
} | |
@override | |
void dispose() { | |
_timer.cancel(); | |
super.dispose(); | |
} | |
void toggleTimer() { | |
setState(() { | |
_running = !_running; | |
if (_running) model = Model(segments); | |
}); | |
_timer = Timer.periodic( | |
const Duration(milliseconds: 10), | |
(Timer timer) { | |
setState(() { | |
if (!_running) { | |
timer.cancel(); | |
} else if (!model.makeMove()) { | |
_running = false; | |
} | |
}); | |
}, | |
); | |
} | |
} | |
class Model { | |
List<Point<int>> chain; | |
int segments; | |
var seen = {const Point(0, 0)}; | |
var anySeen = {const Point(0, 0)}; | |
var maxDim = 10; | |
var minDim = -10; | |
var nMove = 0; | |
List<String> moves; | |
Model(this.segments) | |
: moves = lines.split('\n'), | |
chain = List.generate(segments, (index) => const Point(0, 0)); | |
var dirs = { | |
'R': const Point(1, 0), | |
'L': const Point(-1, 0), | |
'U': const Point(0, 1), | |
'D': const Point(0, -1) | |
}; | |
bool makeMove() { | |
moveSegment(int ix) { | |
var delta = chain[ix - 1] - chain[ix]; | |
if (delta.x.abs() <= 1 && delta.y.abs() <= 1) return; | |
chain[ix] += Point(delta.x.sign, delta.y.sign); | |
anySeen.add(chain[ix]); | |
maxDim = max(maxDim, chain[ix].x); | |
maxDim = max(maxDim, chain[ix].y); | |
minDim = min(minDim, chain[ix].x); | |
minDim = min(minDim, chain[ix].y); | |
} | |
var ps = moves[nMove].split(' '); | |
for (var _ in 0.to(int.parse(ps.last))) { | |
chain[0] += dirs[ps.first]!; | |
anySeen.add(chain.first); | |
1.to(segments).forEach((ix) => moveSegment(ix)); | |
seen.add(chain.last); | |
} | |
nMove += 1; | |
return nMove < moves.length; | |
} | |
} | |
var lines = '''U 2 | |
D 2 | |
L 2 | |
R 2 | |
D 1 | |
L 2 | |
R 1 | |
L 2 | |
U 2 | |
L 1 | |
R 1 | |
L 1 | |
R 1 | |
U 2 | |
D 2 | |
L 1 | |
U 1 | |
L 2 | |
D 1 | |
U 2 | |
D 1 | |
R 1 | |
D 1 | |
U 2 | |
D 2 | |
U 1 | |
R 2 | |
D 2 | |
R 1 | |
U 1 | |
D 1 | |
R 1 | |
L 2 | |
U 2 | |
D 2 | |
L 1 | |
R 2 | |
L 2 | |
R 1 | |
D 1 | |
R 1 | |
D 2 | |
U 2 | |
R 2 | |
D 2 | |
U 2 | |
D 1 | |
U 1 | |
R 2 | |
U 2 | |
R 2 | |
U 2 | |
D 1 | |
U 1 | |
R 2 | |
D 1 | |
U 2 | |
L 1 | |
U 2 | |
D 1 | |
R 2 | |
U 1 | |
R 2 | |
D 1 | |
L 2 | |
R 1 | |
L 1 | |
R 2 | |
U 1 | |
L 1 | |
D 2 | |
L 2 | |
D 1 | |
R 2 | |
D 1 | |
R 2 | |
U 1 | |
D 1 | |
L 1 | |
R 1 | |
L 2 | |
R 1 | |
U 1 | |
D 2 | |
L 1 | |
D 2 | |
R 1 | |
L 1 | |
R 1 | |
U 2 | |
L 2 | |
D 1 | |
U 1 | |
D 2 | |
U 2 | |
R 2 | |
U 2 | |
R 1 | |
U 2 | |
D 1 | |
R 2 | |
D 2 | |
U 1 | |
D 1 | |
R 2 | |
U 1 | |
R 2 | |
L 1 | |
R 1 | |
D 2 | |
U 1 | |
R 3 | |
D 1 | |
R 1 | |
L 3 | |
D 2 | |
R 1 | |
D 1 | |
R 3 | |
L 2 | |
D 2 | |
L 1 | |
U 3 | |
D 3 | |
L 1 | |
D 1 | |
L 3 | |
D 1 | |
U 3 | |
L 1 | |
R 2 | |
U 2 | |
D 1 | |
L 2 | |
D 3 | |
R 1 | |
U 2 | |
L 2 | |
U 1 | |
L 1 | |
U 2 | |
D 2 | |
U 1 | |
L 1 | |
D 3 | |
R 1 | |
D 3 | |
R 1 | |
D 1 | |
U 1 | |
L 2 | |
U 3 | |
D 2 | |
U 1 | |
R 3 | |
D 1 | |
U 3 | |
L 3 | |
U 1 | |
R 2 | |
L 2 | |
R 1 | |
L 1 | |
U 1 | |
L 1 | |
D 2 | |
L 2 | |
U 2 | |
L 1 | |
D 2 | |
R 1 | |
U 2 | |
L 2 | |
R 2 | |
L 1 | |
U 2 | |
L 2 | |
R 3 | |
L 3 | |
D 1 | |
R 3 | |
L 3 | |
D 2 | |
U 3 | |
L 3 | |
D 2 | |
R 2 | |
L 2 | |
D 2 | |
U 2 | |
L 3 | |
R 1 | |
U 2 | |
L 1 | |
D 3 | |
U 2 | |
D 3 | |
L 2 | |
D 3 | |
U 1 | |
D 3 | |
U 3 | |
L 3 | |
D 2 | |
L 3 | |
R 2 | |
D 3 | |
R 1 | |
D 2 | |
U 2 | |
D 1 | |
U 3 | |
D 2 | |
L 2 | |
D 1 | |
R 1 | |
L 2 | |
R 2 | |
L 3 | |
U 3 | |
L 1 | |
D 2 | |
R 1 | |
L 2 | |
D 2 | |
R 1 | |
D 1 | |
L 4 | |
D 2 | |
R 3 | |
U 4 | |
R 4 | |
U 1 | |
D 4 | |
U 4 | |
D 4 | |
U 2 | |
R 3 | |
U 3 | |
R 4 | |
U 3 | |
L 2 | |
R 1 | |
U 4 | |
D 4 | |
R 2 | |
D 4 | |
R 2 | |
U 2 | |
D 1 | |
R 1 | |
L 3 | |
R 2 | |
D 3 | |
R 3 | |
U 1 | |
D 2 | |
R 4 | |
U 1 | |
D 4 | |
R 1 | |
U 1 | |
D 2 | |
U 4 | |
D 3 | |
L 1 | |
D 4 | |
L 2 | |
D 2 | |
R 3 | |
L 1 | |
U 4 | |
L 4 | |
U 3 | |
D 3 | |
L 2 | |
D 3 | |
U 1 | |
R 4 | |
D 3 | |
L 3 | |
D 4 | |
L 1 | |
D 2 | |
U 4 | |
L 2 | |
D 1 | |
R 3 | |
D 4 | |
U 3 | |
D 4 | |
U 2 | |
L 2 | |
R 3 | |
L 4 | |
R 2 | |
L 4 | |
U 3 | |
L 4 | |
D 3 | |
U 4 | |
L 2 | |
U 3 | |
R 2 | |
D 2 | |
U 1 | |
D 2 | |
L 1 | |
R 4 | |
D 3 | |
L 1 | |
D 3 | |
U 2 | |
L 4 | |
D 4 | |
L 4 | |
R 3 | |
L 3 | |
U 2 | |
L 1 | |
R 2 | |
L 4 | |
D 2 | |
L 3 | |
U 3 | |
D 1 | |
L 2 | |
R 3 | |
U 4 | |
R 1 | |
U 3 | |
D 4 | |
L 2 | |
U 2 | |
L 2 | |
R 5 | |
D 5 | |
U 3 | |
R 4 | |
L 4 | |
U 5 | |
D 3 | |
U 2 | |
L 5 | |
U 1 | |
R 3 | |
L 3 | |
U 4 | |
L 3 | |
D 5 | |
U 2 | |
R 1 | |
U 4 | |
R 5 | |
D 2 | |
L 1 | |
U 3 | |
R 5 | |
D 2 | |
U 3 | |
D 5 | |
U 2 | |
D 2 | |
U 2 | |
L 4 | |
U 5 | |
R 4 | |
U 4 | |
L 3 | |
U 5 | |
R 4 | |
L 4 | |
D 5 | |
R 4 | |
D 4 | |
L 2 | |
R 3 | |
L 5 | |
D 3 | |
U 2 | |
D 4 | |
R 1 | |
U 5 | |
R 4 | |
D 1 | |
U 1 | |
L 1 | |
U 3 | |
D 2 | |
U 4 | |
D 3 | |
U 5 | |
R 2 | |
U 5 | |
L 1 | |
R 5 | |
U 5 | |
R 4 | |
D 3 | |
R 1 | |
D 3 | |
U 3 | |
R 1 | |
L 1 | |
D 5 | |
U 4 | |
R 3 | |
D 3 | |
L 2 | |
U 1 | |
L 2 | |
U 5 | |
D 5 | |
U 2 | |
D 4 | |
L 2 | |
D 2 | |
L 1 | |
D 4 | |
U 2 | |
D 4 | |
R 1 | |
U 1 | |
D 4 | |
L 3 | |
D 3 | |
U 2 | |
D 2 | |
L 1 | |
D 5 | |
R 1 | |
L 2 | |
D 5 | |
U 5 | |
L 3 | |
D 1 | |
R 2 | |
L 2 | |
U 1 | |
L 2 | |
D 5 | |
L 1 | |
R 2 | |
D 4 | |
U 6 | |
L 4 | |
R 5 | |
D 4 | |
U 2 | |
R 1 | |
D 4 | |
L 2 | |
R 5 | |
L 6 | |
R 2 | |
U 6 | |
R 5 | |
D 1 | |
U 1 | |
L 6 | |
R 2 | |
L 6 | |
D 3 | |
L 2 | |
R 6 | |
U 6 | |
L 1 | |
D 3 | |
R 1 | |
D 2 | |
R 4 | |
L 4 | |
U 6 | |
L 3 | |
D 1 | |
U 1 | |
L 4 | |
R 3 | |
D 3 | |
R 6 | |
D 3 | |
L 4 | |
R 5 | |
L 5 | |
D 3 | |
U 3 | |
D 6 | |
R 4 | |
D 5 | |
L 2 | |
D 1 | |
R 4 | |
L 6 | |
R 5 | |
U 4 | |
D 5 | |
L 3 | |
D 1 | |
L 6 | |
D 5 | |
L 3 | |
U 3 | |
R 4 | |
L 4 | |
D 6 | |
R 3 | |
L 1 | |
R 1 | |
U 4 | |
D 6 | |
L 3 | |
R 2 | |
D 1 | |
L 2 | |
U 3 | |
D 3 | |
L 5 | |
U 6 | |
L 5 | |
D 5 | |
R 5 | |
U 6 | |
D 2 | |
U 2 | |
R 5 | |
U 6 | |
D 2 | |
R 1 | |
L 3 | |
U 1 | |
L 6 | |
U 1 | |
R 3 | |
L 3 | |
D 4 | |
U 2 | |
R 3 | |
L 1 | |
D 3 | |
R 5 | |
L 2 | |
D 3 | |
L 2 | |
U 6 | |
R 5 | |
U 5 | |
L 1 | |
U 5 | |
L 6 | |
D 4 | |
U 2 | |
L 5 | |
U 3 | |
D 2 | |
U 4 | |
D 4 | |
U 2 | |
R 5 | |
L 4 | |
D 3 | |
R 6 | |
D 1 | |
R 4 | |
U 5 | |
L 7 | |
D 2 | |
R 6 | |
U 4 | |
L 5 | |
D 5 | |
L 2 | |
D 1 | |
R 4 | |
D 6 | |
L 5 | |
D 4 | |
R 7 | |
U 4 | |
D 7 | |
U 4 | |
R 3 | |
L 7 | |
R 7 | |
D 3 | |
R 5 | |
U 2 | |
R 3 | |
D 5 | |
R 5 | |
U 4 | |
D 2 | |
U 5 | |
R 1 | |
U 5 | |
R 5 | |
U 7 | |
R 4 | |
D 6 | |
L 1 | |
U 3 | |
D 4 | |
U 3 | |
D 7 | |
U 2 | |
L 4 | |
D 6 | |
R 7 | |
U 1 | |
L 6 | |
D 4 | |
R 6 | |
D 4 | |
U 5 | |
L 4 | |
D 6 | |
L 5 | |
D 1 | |
L 5 | |
U 3 | |
L 3 | |
U 2 | |
R 6 | |
U 3 | |
D 4 | |
U 4 | |
L 1 | |
D 3 | |
L 3 | |
R 6 | |
U 2 | |
L 3 | |
D 7 | |
L 2 | |
U 7 | |
L 4 | |
U 4 | |
D 7 | |
L 4 | |
D 3 | |
L 3 | |
D 3 | |
U 1 | |
D 5 | |
L 1 | |
R 4 | |
D 7 | |
L 7 | |
D 6 | |
R 3 | |
U 1 | |
R 6 | |
L 4 | |
D 6 | |
R 5 | |
U 7 | |
L 6 | |
R 6 | |
L 3 | |
D 4 | |
U 1 | |
R 2 | |
L 1 | |
R 1 | |
U 4 | |
D 1 | |
L 4 | |
R 2 | |
U 4 | |
R 3 | |
D 1 | |
U 3 | |
R 4 | |
L 2 | |
U 4 | |
L 3 | |
D 7 | |
R 6 | |
U 4 | |
L 4 | |
D 7 | |
R 6 | |
D 7 | |
L 5 | |
R 5 | |
D 7 | |
R 4 | |
D 1 | |
L 6 | |
U 8 | |
L 4 | |
U 2 | |
L 6 | |
R 1 | |
L 5 | |
U 5 | |
D 3 | |
L 8 | |
R 3 | |
L 3 | |
R 5 | |
U 4 | |
R 6 | |
D 4 | |
U 1 | |
L 2 | |
R 8 | |
D 7 | |
U 3 | |
D 4 | |
L 8 | |
U 6 | |
L 5 | |
R 1 | |
U 1 | |
R 4 | |
U 5 | |
D 2 | |
R 2 | |
U 2 | |
L 1 | |
U 8 | |
D 4 | |
R 7 | |
U 3 | |
D 6 | |
R 6 | |
L 3 | |
R 8 | |
D 7 | |
U 2 | |
R 5 | |
L 3 | |
U 1 | |
D 6 | |
R 1 | |
D 3 | |
L 2 | |
U 2 | |
D 8 | |
U 8 | |
L 8 | |
U 5 | |
D 6 | |
U 6 | |
L 6 | |
U 6 | |
D 5 | |
R 8 | |
L 7 | |
D 6 | |
R 1 | |
D 4 | |
L 1 | |
U 7 | |
R 3 | |
L 2 | |
D 6 | |
R 6 | |
D 7 | |
L 6 | |
U 5 | |
R 4 | |
D 7 | |
U 7 | |
D 5 | |
L 4 | |
R 6 | |
D 3 | |
L 6 | |
U 2 | |
D 7 | |
R 7 | |
U 5 | |
D 3 | |
U 2 | |
L 1 | |
D 2 | |
U 4 | |
L 1 | |
R 3 | |
L 6 | |
U 9 | |
D 8 | |
L 3 | |
R 3 | |
D 4 | |
R 3 | |
U 6 | |
L 7 | |
D 8 | |
R 9 | |
D 1 | |
L 3 | |
R 6 | |
D 4 | |
L 3 | |
U 6 | |
L 7 | |
R 7 | |
U 9 | |
L 9 | |
R 7 | |
U 8 | |
R 7 | |
U 7 | |
D 1 | |
L 9 | |
R 6 | |
U 4 | |
D 6 | |
L 8 | |
R 7 | |
D 6 | |
U 5 | |
R 6 | |
D 8 | |
L 2 | |
D 5 | |
R 9 | |
U 9 | |
L 7 | |
U 2 | |
R 7 | |
L 6 | |
U 6 | |
D 5 | |
L 8 | |
D 7 | |
L 8 | |
D 9 | |
R 7 | |
L 5 | |
D 9 | |
L 7 | |
R 2 | |
L 6 | |
R 9 | |
D 8 | |
R 8 | |
U 7 | |
R 4 | |
L 6 | |
R 1 | |
U 9 | |
D 2 | |
R 7 | |
D 5 | |
R 4 | |
D 1 | |
U 7 | |
D 5 | |
R 4 | |
U 2 | |
D 5 | |
L 9 | |
R 6 | |
U 7 | |
D 5 | |
U 4 | |
D 6 | |
L 3 | |
R 6 | |
U 3 | |
R 9 | |
L 9 | |
U 4 | |
D 1 | |
U 3 | |
R 7 | |
D 8 | |
R 9 | |
U 1 | |
R 1 | |
U 4 | |
D 7 | |
R 1 | |
L 1 | |
R 8 | |
D 1 | |
U 1 | |
L 3 | |
U 2 | |
D 6 | |
R 6 | |
L 1 | |
R 9 | |
L 2 | |
D 3 | |
U 8 | |
D 9 | |
U 1 | |
L 10 | |
U 10 | |
D 8 | |
U 9 | |
L 3 | |
R 2 | |
D 3 | |
U 4 | |
L 2 | |
R 10 | |
L 9 | |
U 5 | |
L 5 | |
D 4 | |
L 7 | |
U 1 | |
L 1 | |
R 1 | |
L 7 | |
D 7 | |
U 7 | |
L 3 | |
U 10 | |
R 7 | |
U 9 | |
L 6 | |
R 2 | |
D 9 | |
L 10 | |
D 9 | |
L 9 | |
R 5 | |
L 5 | |
R 8 | |
D 9 | |
R 1 | |
D 6 | |
L 1 | |
U 9 | |
R 3 | |
L 10 | |
D 10 | |
L 5 | |
D 10 | |
R 3 | |
U 7 | |
D 6 | |
U 7 | |
D 3 | |
R 5 | |
D 5 | |
L 6 | |
D 4 | |
U 7 | |
D 7 | |
R 9 | |
U 10 | |
R 4 | |
U 1 | |
R 1 | |
U 8 | |
R 3 | |
U 10 | |
R 6 | |
L 1 | |
U 3 | |
R 9 | |
U 2 | |
D 8 | |
R 5 | |
D 3 | |
R 3 | |
U 9 | |
R 6 | |
L 8 | |
R 2 | |
L 5 | |
R 2 | |
L 10 | |
D 2 | |
L 3 | |
U 1 | |
D 10 | |
L 5 | |
R 10 | |
D 7 | |
L 2 | |
R 7 | |
U 6 | |
D 4 | |
L 8 | |
D 8 | |
U 3 | |
R 2 | |
U 10 | |
D 8 | |
U 7 | |
D 9 | |
U 4 | |
R 9 | |
L 2 | |
R 8 | |
U 9 | |
R 10 | |
U 10 | |
D 8 | |
R 8 | |
U 2 | |
L 7 | |
U 3 | |
L 1 | |
D 7 | |
R 1 | |
U 2 | |
R 8 | |
U 4 | |
D 4 | |
L 2 | |
U 9 | |
L 7 | |
D 7 | |
L 2 | |
R 2 | |
D 9 | |
L 11 | |
U 4 | |
L 3 | |
D 7 | |
U 7 | |
R 6 | |
D 7 | |
U 11 | |
R 4 | |
L 3 | |
R 2 | |
U 9 | |
L 1 | |
U 11 | |
D 7 | |
R 10 | |
D 10 | |
U 7 | |
L 1 | |
U 8 | |
L 2 | |
D 11 | |
L 6 | |
D 1 | |
L 8 | |
D 9 | |
U 9 | |
R 5 | |
L 4 | |
D 7 | |
U 8 | |
L 5 | |
D 3 | |
R 6 | |
L 5 | |
R 7 | |
L 7 | |
D 7 | |
L 10 | |
U 4 | |
L 1 | |
U 9 | |
D 2 | |
R 2 | |
U 4 | |
D 3 | |
R 9 | |
D 11 | |
U 10 | |
L 3 | |
R 9 | |
U 6 | |
L 1 | |
R 9 | |
L 8 | |
U 2 | |
L 3 | |
U 9 | |
D 2 | |
L 4 | |
D 5 | |
U 4 | |
L 5 | |
D 11 | |
L 6 | |
U 10 | |
D 9 | |
U 3 | |
L 9 | |
U 11 | |
D 3 | |
L 7 | |
D 4 | |
L 8 | |
U 5 | |
D 10 | |
L 7 | |
U 10 | |
L 10 | |
U 4 | |
D 10 | |
L 7 | |
R 2 | |
D 3 | |
L 6 | |
R 5 | |
U 11 | |
D 4 | |
U 6 | |
D 9 | |
R 2 | |
L 9 | |
U 9 | |
R 11 | |
U 9 | |
L 10 | |
R 8 | |
L 5 | |
R 2 | |
L 12 | |
R 8 | |
U 10 | |
R 7 | |
D 7 | |
U 3 | |
L 10 | |
U 10 | |
L 11 | |
U 1 | |
R 8 | |
D 4 | |
R 3 | |
D 7 | |
U 9 | |
L 2 | |
R 9 | |
L 8 | |
R 6 | |
L 7 | |
D 11 | |
U 12 | |
D 6 | |
U 7 | |
L 11 | |
D 1 | |
U 9 | |
R 7 | |
L 3 | |
D 3 | |
U 5 | |
R 5 | |
L 3 | |
R 11 | |
L 2 | |
U 9 | |
D 9 | |
R 8 | |
U 7 | |
D 5 | |
L 9 | |
D 2 | |
L 1 | |
R 5 | |
U 9 | |
R 10 | |
U 12 | |
L 9 | |
D 12 | |
R 5 | |
U 2 | |
L 7 | |
R 6 | |
L 1 | |
U 12 | |
L 10 | |
R 11 | |
D 1 | |
L 8 | |
U 6 | |
D 10 | |
R 10 | |
L 1 | |
U 11 | |
D 2 | |
R 6 | |
U 1 | |
R 4 | |
D 1 | |
R 6 | |
U 12 | |
D 1 | |
L 1 | |
U 4 | |
D 4 | |
U 12 | |
D 12 | |
L 5 | |
R 10 | |
D 4 | |
R 1 | |
D 8 | |
U 6 | |
R 7 | |
D 12 | |
U 9 | |
D 6 | |
U 6 | |
D 1 | |
R 2 | |
L 7 | |
R 5 | |
L 4 | |
U 1 | |
L 10 | |
R 8 | |
L 12 | |
D 11 | |
U 2 | |
L 10 | |
D 12 | |
R 9 | |
D 1 | |
U 7 | |
L 5 | |
D 4 | |
U 12 | |
L 12 | |
D 11 | |
U 11 | |
L 6 | |
D 2 | |
R 11 | |
L 1 | |
U 10 | |
L 12 | |
D 11 | |
R 8 | |
D 2 | |
L 10 | |
R 4 | |
L 10 | |
D 13 | |
L 10 | |
D 5 | |
U 9 | |
L 3 | |
D 2 | |
U 3 | |
D 11 | |
L 7 | |
D 11 | |
U 4 | |
D 11 | |
U 8 | |
L 5 | |
U 6 | |
L 3 | |
U 3 | |
R 8 | |
D 10 | |
R 1 | |
D 13 | |
L 7 | |
D 7 | |
R 1 | |
D 2 | |
L 3 | |
D 5 | |
R 5 | |
L 5 | |
U 7 | |
L 4 | |
D 1 | |
L 11 | |
R 10 | |
U 8 | |
D 9 | |
U 8 | |
R 11 | |
L 1 | |
R 6 | |
D 6 | |
U 4 | |
L 2 | |
D 11 | |
U 10 | |
D 4 | |
L 11 | |
R 5 | |
U 2 | |
D 10 | |
U 12 | |
L 12 | |
D 11 | |
L 12 | |
D 10 | |
L 4 | |
U 7 | |
D 1 | |
R 4 | |
L 10 | |
D 9 | |
R 5 | |
D 3 | |
L 3 | |
D 5 | |
R 9 | |
D 10 | |
L 8 | |
R 6 | |
D 4 | |
U 5 | |
R 11 | |
U 13 | |
R 10 | |
U 11 | |
R 9 | |
U 4 | |
D 8 | |
U 4 | |
D 6 | |
R 12 | |
U 12 | |
R 9 | |
U 12 | |
L 13 | |
U 6 | |
D 10 | |
R 2 | |
L 5 | |
U 3 | |
L 8 | |
R 11 | |
D 13 | |
R 6 | |
U 13 | |
L 3 | |
U 3 | |
D 4 | |
L 11 | |
U 14 | |
D 13 | |
U 1 | |
L 8 | |
U 13 | |
R 14 | |
U 2 | |
L 13 | |
R 1 | |
U 1 | |
L 13 | |
R 4 | |
D 10 | |
R 10 | |
D 14 | |
R 7 | |
D 10 | |
L 2 | |
R 7 | |
U 10 | |
R 13 | |
D 7 | |
U 11 | |
D 13 | |
L 7 | |
U 8 | |
L 4 | |
D 7 | |
L 2 | |
R 2 | |
L 7 | |
D 13 | |
U 2 | |
R 10 | |
U 2 | |
L 6 | |
R 11 | |
D 11 | |
L 13 | |
D 13 | |
L 14 | |
R 4 | |
L 7 | |
D 7 | |
R 11 | |
U 10 | |
D 3 | |
R 4 | |
L 2 | |
R 9 | |
U 7 | |
L 1 | |
R 5 | |
L 3 | |
U 8 | |
R 6 | |
U 10 | |
L 3 | |
R 12 | |
U 13 | |
D 3 | |
R 7 | |
D 1 | |
U 7 | |
R 13 | |
D 1 | |
R 10 | |
L 8 | |
R 8 | |
L 4 | |
R 9 | |
L 5 | |
D 13 | |
L 3 | |
U 8 | |
L 13 | |
U 4 | |
R 3 | |
U 2 | |
R 7 | |
D 9 | |
R 5 | |
U 4 | |
R 5 | |
D 7 | |
L 14 | |
R 13 | |
D 3 | |
L 12 | |
D 7 | |
U 5 | |
L 8 | |
D 10 | |
U 14 | |
D 8 | |
R 12 | |
U 3 | |
L 9 | |
R 7 | |
U 9 | |
R 5 | |
L 6 | |
U 13 | |
R 6 | |
L 8 | |
R 12 | |
D 13 | |
U 6 | |
L 12 | |
U 15 | |
D 10 | |
U 15 | |
D 7 | |
R 14 | |
D 5 | |
R 9 | |
U 11 | |
L 8 | |
D 9 | |
R 3 | |
U 3 | |
R 8 | |
D 6 | |
L 3 | |
R 9 | |
U 12 | |
L 12 | |
D 3 | |
U 13 | |
L 4 | |
R 3 | |
D 6 | |
R 12 | |
D 15 | |
L 3 | |
D 9 | |
R 9 | |
D 11 | |
L 6 | |
D 6 | |
L 3 | |
U 2 | |
D 6 | |
L 4 | |
D 3 | |
U 5 | |
D 1 | |
U 11 | |
R 11 | |
U 5 | |
L 12 | |
U 14 | |
R 1 | |
D 10 | |
L 8 | |
R 12 | |
L 5 | |
U 2 | |
D 2 | |
U 8 | |
D 5 | |
U 14 | |
D 2 | |
L 6 | |
R 5 | |
D 10 | |
L 10 | |
U 2 | |
R 2 | |
U 2 | |
L 15 | |
R 14 | |
D 12 | |
L 4 | |
U 2 | |
D 10 | |
R 14 | |
U 13 | |
R 9 | |
L 4 | |
U 15 | |
D 8 | |
R 4 | |
D 9 | |
U 1 | |
R 4 | |
D 3 | |
L 3 | |
D 7 | |
L 12 | |
R 8 | |
D 7 | |
L 15 | |
R 12 | |
U 10 | |
L 11 | |
R 1 | |
U 13 | |
R 14 | |
L 14 | |
D 14 | |
U 1 | |
R 1 | |
U 13 | |
L 15 | |
U 11 | |
D 15 | |
U 1 | |
R 15 | |
L 4 | |
U 12 | |
R 8 | |
U 10 | |
R 7 | |
U 3 | |
L 14 | |
U 14 | |
R 8 | |
D 1 | |
U 9 | |
L 3 | |
U 8 | |
D 5 | |
L 12 | |
U 15 | |
D 13 | |
L 11 | |
R 4 | |
U 12 | |
R 7 | |
L 15 | |
U 8 | |
D 7 | |
L 8 | |
R 7 | |
D 1 | |
L 12 | |
U 15 | |
L 15 | |
U 9 | |
R 10 | |
D 8 | |
U 10 | |
R 15 | |
D 3 | |
R 14 | |
D 13 | |
L 3 | |
R 2 | |
U 14 | |
L 3 | |
R 7 | |
L 15 | |
D 4 | |
R 14 | |
U 11 | |
L 2 | |
U 16 | |
L 6 | |
D 4 | |
L 3 | |
U 8 | |
R 16 | |
U 8 | |
D 13 | |
L 11 | |
U 11 | |
D 11 | |
R 14 | |
D 15 | |
L 4 | |
R 13 | |
U 4 | |
D 15 | |
U 10 | |
D 4 | |
R 14 | |
D 5 | |
U 7 | |
R 1 | |
L 6 | |
U 5 | |
L 10 | |
U 15 | |
L 14 | |
D 2 | |
U 5 | |
R 8 | |
L 14 | |
U 3 | |
R 9 | |
L 14 | |
R 8 | |
D 10 | |
L 8 | |
R 9 | |
L 14 | |
D 8 | |
R 16 | |
U 2 | |
D 12 | |
L 10 | |
R 12 | |
D 3 | |
R 11 | |
U 11 | |
D 7 | |
L 10 | |
D 15 | |
U 13 | |
R 5 | |
D 8 | |
U 12 | |
L 3 | |
R 6 | |
D 10 | |
R 5 | |
U 8 | |
R 16 | |
U 16 | |
D 3 | |
R 11 | |
D 7 | |
U 4 | |
R 14 | |
L 12 | |
U 5 | |
L 1 | |
U 14 | |
L 15 | |
R 13 | |
U 16 | |
D 6 | |
U 7 | |
D 11 | |
L 11 | |
U 13 | |
R 10 | |
D 16 | |
U 14 | |
L 1 | |
D 17 | |
U 14 | |
D 2 | |
L 17 | |
U 1 | |
L 6 | |
D 17 | |
R 13 | |
L 10 | |
U 16 | |
L 3 | |
U 4 | |
D 4 | |
L 2 | |
D 10 | |
L 2 | |
R 11 | |
L 14 | |
D 6 | |
U 13 | |
R 8 | |
D 8 | |
L 4 | |
U 8 | |
D 17 | |
R 11 | |
L 7 | |
U 15 | |
L 7 | |
R 11 | |
D 13 | |
U 3 | |
R 12 | |
D 9 | |
L 11 | |
D 14 | |
U 10 | |
L 11 | |
D 13 | |
L 17 | |
R 7 | |
D 4 | |
R 16 | |
D 1 | |
U 8 | |
L 6 | |
R 9 | |
L 7 | |
D 2 | |
L 3 | |
D 13 | |
L 6 | |
U 8 | |
L 13 | |
U 6 | |
L 12 | |
U 5 | |
D 1 | |
R 10 | |
L 17 | |
D 13 | |
U 1 | |
L 9 | |
R 8 | |
D 10 | |
U 10 | |
R 6 | |
U 17 | |
R 16 | |
D 3 | |
L 4 | |
D 13 | |
L 1 | |
U 6 | |
R 15 | |
U 6 | |
D 6 | |
U 1 | |
D 12 | |
U 12 | |
R 6 | |
D 2 | |
R 13 | |
D 16 | |
L 14 | |
D 16 | |
U 12 | |
R 13 | |
U 14 | |
R 4 | |
U 3 | |
D 3 | |
R 11 | |
U 2 | |
L 17 | |
R 13 | |
D 2 | |
R 5 | |
L 5 | |
D 17 | |
R 9 | |
D 3 | |
U 16 | |
R 8 | |
L 18 | |
R 12 | |
L 8 | |
R 10 | |
L 9 | |
R 4 | |
U 1 | |
D 4 | |
U 7 | |
L 2 | |
D 9 | |
R 12 | |
D 2 | |
R 1 | |
U 11 | |
D 4 | |
L 16 | |
U 18 | |
D 3 | |
R 14 | |
L 4 | |
U 2 | |
L 16 | |
R 4 | |
L 5 | |
D 3 | |
U 17 | |
R 3 | |
U 5 | |
R 8 | |
D 4 | |
L 3 | |
D 18 | |
L 12 | |
D 17 | |
U 15 | |
L 1 | |
D 17 | |
R 11 | |
U 5 | |
R 3 | |
L 16 | |
R 6 | |
L 14 | |
R 4 | |
U 15 | |
D 7 | |
R 15 | |
L 17 | |
U 14 | |
L 9 | |
R 9 | |
L 9 | |
D 11 | |
L 10 | |
U 7 | |
L 1 | |
U 11 | |
R 4 | |
U 7 | |
L 10 | |
D 16 | |
R 3 | |
L 17 | |
R 16 | |
L 9 | |
D 4 | |
R 17 | |
L 7 | |
U 5 | |
D 16 | |
R 5 | |
D 13 | |
U 5 | |
R 8 | |
D 10 | |
R 1 | |
L 2 | |
R 10 | |
U 12 | |
D 2 | |
U 12 | |
L 10 | |
R 6 | |
L 18 | |
U 7 | |
D 9 | |
R 16 | |
L 18 | |
D 17 | |
R 14 | |
U 9 | |
R 5 | |
D 4 | |
R 18 | |
D 6 | |
R 7 | |
U 12 | |
L 7 | |
D 11 | |
U 12 | |
R 12 | |
U 4 | |
L 8 | |
U 6 | |
D 11 | |
L 8 | |
R 18 | |
U 12 | |
R 2 | |
U 13 | |
D 3 | |
R 10 | |
D 4 | |
R 10 | |
L 18 | |
D 1 | |
L 18 | |
U 2 | |
D 19 | |
U 14 | |
L 14 | |
U 3 | |
D 14 | |
R 4 | |
L 10 | |
D 13 | |
R 6 | |
D 14 | |
R 13 | |
D 13 | |
R 11 | |
U 16 | |
L 18 | |
U 3 | |
R 8 | |
U 17 | |
R 7 | |
L 12 | |
D 3 | |
L 6 | |
R 6 | |
D 18 | |
L 2 | |
D 16 | |
R 1 | |
U 16 | |
R 14 | |
L 9 | |
D 6 | |
L 5 | |
D 6 | |
U 9 | |
L 11 | |
D 18 | |
R 5 | |
L 15 | |
D 18 | |
R 18 | |
L 3 | |
R 18 | |
L 18 | |
R 2 | |
L 15 | |
R 12 | |
D 9 | |
L 3 | |
U 17 | |
R 1 | |
U 18 | |
D 16 | |
U 17 | |
L 5 | |
U 9 | |
R 4 | |
L 14 | |
D 15 | |
R 11 | |
U 18 | |
L 19 | |
U 12 | |
R 13 | |
U 16 | |
D 16 | |
L 8 | |
D 16 | |
R 4 | |
U 5 | |
D 18 | |
R 13 | |
D 13 | |
U 9 | |
R 14 | |
L 14 | |
U 17 | |
D 9 | |
L 8 | |
R 18 | |
L 12 | |
R 16 | |
L 11 | |
U 14 | |
D 2 | |
L 19 | |
U 19 | |
D 11 | |
R 11 | |
U 16 | |
D 15 | |
U 16 | |
L 18 | |
D 3 | |
L 18 | |
U 7 | |
L 14 | |
D 6 | |
U 9 | |
D 2 | |
L 19 | |
D 17'''; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment