m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/11
diff options
context:
space:
mode:
authorMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2020-12-25 15:27:26 +0100
committerMarcin Chrzanowski <marcin.j.chrzanowski@gmail.com>2020-12-25 15:27:26 +0100
commit69a8c7bb9862966b2f21dbb61e86f652f9b238f9 (patch)
treebb73bc2d8e85809e8879e4aa2fbcaae2f57dc03e /11
parent5a28775f19a8a48b67fc41e048c2a3958afa1e42 (diff)
Add day 11
Diffstat (limited to '11')
-rw-r--r--11/a.rb51
-rw-r--r--11/b.rb58
-rw-r--r--11/input.txt95
3 files changed, 204 insertions, 0 deletions
diff --git a/11/a.rb b/11/a.rb
new file mode 100644
index 0000000..7aa7f43
--- /dev/null
+++ b/11/a.rb
@@ -0,0 +1,51 @@
+input = File.readlines('input.txt').map { |l| ".#{l.chomp}.".split '' }
+input.unshift(['.'] * input[0].length)
+input.push(['.'] * input[0].length)
+
+next_map = []
+input.size.times do
+ row = []
+ input[0].size.times do
+ row.push '.'
+ end
+ next_map.push row
+end
+
+changed = true
+current_count = 0
+while changed
+ current_count = 0
+ changed = false
+ (1...input.length-1).each do |i|
+ (1...input[0].length-1).each do |j|
+ if input[i][j] != '.'
+ count = 0
+ (-1..1).each do |di|
+ (-1..1).each do |dj|
+ if !(di == 0 && dj == 0)
+ count += input[i+di][j+dj] == '#' ? 1 : 0
+ end
+ end
+ end
+
+ if count == 0 && input[i][j] == 'L'
+ next_map[i][j] = '#'
+ changed = true
+ elsif count >= 4 && input[i][j] == '#'
+ next_map[i][j] = 'L'
+ changed = true
+ else
+ next_map[i][j] = input[i][j]
+ end
+
+ current_count += next_map[i][j] == '#' ? 1 : 0
+ end
+ end
+ end
+
+ tmp = input
+ input = next_map
+ next_map = tmp
+end
+
+puts current_count
diff --git a/11/b.rb b/11/b.rb
new file mode 100644
index 0000000..bc93bce
--- /dev/null
+++ b/11/b.rb
@@ -0,0 +1,58 @@
+input = File.readlines('input.txt').map { |l| ".#{l.chomp}.".split '' }
+input.unshift(['.'] * input[0].length)
+input.push(['.'] * input[0].length)
+
+next_map = []
+input.size.times do
+ row = []
+ input[0].size.times do
+ row.push '.'
+ end
+ next_map.push row
+end
+
+changed = true
+current_count = 0
+while changed
+ current_count = 0
+ changed = false
+ (1...input.length-1).each do |i|
+ (1...input[0].length-1).each do |j|
+ if input[i][j] != '.'
+ count = 0
+ (-1..1).each do |di|
+ (-1..1).each do |dj|
+ if !(di == 0 && dj == 0)
+ offset_i = i + di
+ offset_j = j + dj
+ while offset_i > 0 && offset_i < input.length - 1 && offset_j > 0 && offset_j < input[0].length - 1 && input[offset_i][offset_j] == '.'
+ offset_i += di
+ offset_j += dj
+ end
+
+ count += input[offset_i][offset_j] == '#' ? 1 : 0
+ end
+ end
+ end
+
+ if count == 0 && input[i][j] == 'L'
+ next_map[i][j] = '#'
+ changed = true
+ elsif count >= 5 && input[i][j] == '#'
+ next_map[i][j] = 'L'
+ changed = true
+ else
+ next_map[i][j] = input[i][j]
+ end
+
+ current_count += next_map[i][j] == '#' ? 1 : 0
+ end
+ end
+ end
+
+ tmp = input
+ input = next_map
+ next_map = tmp
+end
+
+puts current_count
diff --git a/11/input.txt b/11/input.txt
new file mode 100644
index 0000000..8f2a9e1
--- /dev/null
+++ b/11/input.txt
@@ -0,0 +1,95 @@
+LLLLLLLL.LLLL.LLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLL.LLLLLLL.LLLLLL.LLLLLLLLLL.L
+LLLLLLLLLLLLLLLLLLL.L.LL.LLL.LLLLL.LLLLLLLLLLL.LL.LLLLL.LLLLLLLL.LLLLLLLLL.LLL.LLLLLLLLLLLLLLLLLLL
+LLLLLLLLLLLLL.LLLLLLLLLLLLLL.LL.LL.LLLLLLL.LLLLLL.LLLLLLLLL.LLLL.LLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLL
+LLLLLLLL.LLLL.LLLLL..LLLLLLL.L.LLL.LLLLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLL
+LLLLLL.L.LLLL.L.LLL.LLLLLLLLLLLLLL.LLL.LLL.LLLLLL.LLLLL.LLLLLLLLLLLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLL
+LLLLLLLL.LLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLL.L.LLLLLLLLLLLLLLLLLLL
+L...LLL...L....L......L..L....LL...L.LLL...............L..LL.LLL.LL..L..........L......L.L....L.LL
+LLLLLLLL.LLLL.LLLLL.LLLLLLLL.LLLLL.L.LLLL.LLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLL
+LLLLLLLL.LLLL.LLLLL.LLLLLL.L.LLLLL.LLL.LLL.LLLLLL.LLLLL.LLLL.LLL.LLLLL.LLLLLLLLLLLL.L.LLLLLLLLL.LL
+LLLLLLLL.LLLL.L.LLL.LLLLLLLLLLLL.L.LLLLLLLLLL.LLLLLLLLL.LLLLLLLL..L.LL.LLLLLLLLLLLLLL..L.LLLLLLLLL
+LLLLLLLL.LLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLL..LLLLLL.LLLLLL.LLLLLLLLLLLL
+LL.LLLLLLLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLL.
+LLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLL.LLL.LLLLLLLLLL.LLLLLLLLLLLLLL.LLLLL.LLL.LLLLLLLL.L.LLLL.LLLLLLL
+L.LL.....L...LLL..L..L..L...L..L..L.LLLL...L...LLL...L.L...LL.L.....L.....L.......L..L.L....L..L..
+LLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLL.L.LLL.L.LLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLL
+LLLLLLLL.LLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLL.L.LLLLL.LLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLL
+LLLLLLLLLLLLLLL.LLL.LLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLL
+LL.LLLLLLLLLLLLLLLL.LLLLL.LLLLLLLL.LLLLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLL
+LLLLLLLLLLLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLL.LLL.LLL.L.LLLL.LLLLLLLLLLLL
+L...L.LLL..L..L....LL.....L.LL...L......L...L...LL.LLL....LL........L.L.....LL..L...L..LL.LL.L.LL.
+LLLLLLLLLLLLLLLLLLL.LLLLL.LL.LLLLL.LLLLLLLLLLLLLL.L.LLL.LLLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLL
+LLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLL.L.LLLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLL
+LLLLLLLL.L.LLL.LLLL.LLLLLLLL.LL.LL.LLLLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLL
+LLLLLLLLLLLLLLLLLLLLLLLLLLL..LLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLL
+.L..LL.L.LLLL.LLLLLLLLLLLLLL.LLL.LLLLLLLLL.LLL.LL.LLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLL
+....L..........L.L.L......LL.L....L.LLL...L.L.L.L..L.....L........L...L...L.L.......LL...L.L..LLL.
+LLLLLLLL.LLLL.LLLLL.LLLLLLLL.LL.LL.LLLLLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLL
+LLLLLLLLLLLLL.LLLL..LLLL.LLL.LLLLL.LLLLLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLL.LLLLLL..L.LLL.LLLLLLLLLLLLL
+LLLLLLLL.LLLL.LLLLL.LLLLLLLLLLL.LL.LLLLLLL.LLLLLLLLLLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLL.
+LLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLLLL.LLL.LLLLLLLLLLLL
+LLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLL..LLLLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLL
+LLLLLLLL.LLLL.LLLLL.LLLLLLLL.LLLLL.LLL.LLLLLLLLLL.LLLLL.LLLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLL
+L.LLLLLL.LLLL.LL.LL.LLLLLLLL.LLLLL.LLLLLLLLLLLLLLL.LLLL.LLLLLLLL.LLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLL
+.LL.LL...L.L...L..LL..L........L..L...........L.L..L...L.L...L..LL..L..L......L.L.....L..L......L.
+LLLLLLLL.LLLLLLLLLL.LLLLLLLL.LLLLL.LLLLLLL.L.LLLLLLLLLL.LLLLLLLLLLLLLL.LLL.LLL.LLLLLL.LLLLLLLLLLLL
+LLLLLLLL.LLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLL.LL.LL.LLLLLLLL.L.LLL.LLLLLLLLLLLLLL.LLLLLLLLLLLL
+LLLLLLLL.LLLL.LL.LL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLL.L.LLLLL.LLLLLL.LLLLLLLLLLL.
+LLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLL
+LL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLL.L.LLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLL
+LLLL.LLL.LLLL.LLLLL.LLLLLLLL.LLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLL
+..L.L.L.L.LL..LL....L....L..L.L.....L...LL.....L.LLL.....L.L.LLLL.L....L.L.....L..L...L.L.LL.L....
+LLLLLLLL.LLLLLL.LLLLLLLLLLL..LLLLL.LLLLLLL.LLLLLLLLLLLL.LLLLL.LL.LLLLL.LLLLLLL.LLLLLL.LLL.LLLLLLLL
+LLLLLLLL.LLLL.LLLLL.LLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLL.L.LLLLLLL.LLLLLL.LLLLLLLLLLLL
+LLLLLLLL.LLLL..LLLL.LLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLL
+LLLLLLLL.LLLL.LLLLL.LLLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLL.L.LL.LLLL.LLLLLLLLLLLLLLLLLLL
+LLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLLL.L.LLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLL
+LLLLLLLLLLLLL.LLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLL...LL.L.LLLLLLLLL.LL
+LLLLLLLL.LLLL.LLLLLLLLLLLLLL.LLLLL..L.LLLL.LLLLLL.LL.LL.LLLLLLLLLLLLLLLLLL.LLL.LLLLLLLLLLLLLLLLLLL
+LLLLLLLL.L.LL.LLLLL.LLLLLLLL.LLLLLLL.LLLLLLLL.L.L.LLLLL..LLLLLLL.LLLLL.LLL.LLL.LLLLLL.LLLLLLLLLLLL
+.....L.L.LL.......L..LLL...LL....L.L.L....L..L.L.L.LL...L..L....L....LL.L.L....L....LL..L.L....L..
+LLLLLLLL.LLLLLLLLLL.LLLLLLLL.LLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLL
+LLLLLLLL.LL.L.LLLL.LLLLLLLLL.LLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLL
+.LLLLLLL.LLLLLLLLLL.LLLLLL.L.LLLLL.LLLLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLL
+LLLLLLLL.LLLL.LLLLL.LLLLLLLLLLLLLL.LLLLLLL.LLLLLL.LLLLL.LLL.LLLL.LLLLL.L.LLLLL.LLLLLL.LLLLLLLLLL.L
+LLLLLLLLLLLLL.LLLLL.LLLLLLLL.LLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLL.LLLLLLLLLLLLLL
+LLLLLLLL.LLL..LLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLL.LLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
+..L....L..L..L..L....L.......L.....L.LL.L.L...LL.L.....LL.L...LL.LL.L...L.L....LL..L.....LL.L..L..
+LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLL..LLLLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLL
+LLLLL.LL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLL.LL.LLLLL.LLLL.LLLLLLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLL
+LLLLLLLL.LLLL.L.LLL.L.LLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLL
+LLLLLLLL.LL.LLLLLLL.L.LLLLLL.LLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLL.LLLLLL.
+LLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLL
+..L....LL.L.L..L.L.L.LL..L.L.....L.......LLLL...L.....L...LL..L..L..L....L.L.LL...L..L...L......L.
+LLLLLLLL.LLLL.LLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLLLL.LLL.LLLLLLLLL.LLL.LLLLLLLLLLLLLLL
+LLLLLLLLLLLLL.LL.LL.LLLLLLLL.LLLLL.LL.LLLL.LLL.LL.LLLLL.LLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLL
+LLLLL..L.LLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLL
+LLLLLLLL.LLLL.LLLL.LLLLLLLLL.LLLLL.LLLLLLL.LL.LLL.LLLLLLLLLLLLLL.LLLLL.L.LLLLL.LLLLLL.LL.LLLLL.LLL
+LLLLLLLL.LLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLL.LLLLLL
+LLLLLLLL.LLLL.LLLLL.LLLLLLLL.LLLLL.LLLLLLLLLLLLLL.LLLLL.LLLL.LLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLL
+LLLLLLLL.LLLL.LLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLL.LLLLLLLL.LL
+LLLLLLLL.LLLL.LLLLL.LLLLLL.L.LLLLL.LL.LL..LLLLLLL.LLLLL.LLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLL
+LLLLLLLL.LLLL..LLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLL.LLLLLL.L.LLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLL
+........LLLL.L.LL...L..L.L...LLLL.L.L.L.L....L...L..L.L.LLL....LL.L.....L...LLL.....L.LL..L......L
+LLLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLL..LLLLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLL.LLLLLLL
+LLLLLLLL.LLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLL
+LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL..LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLL.LL.LLLLLLLLLLLL
+LLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLL.LLLLLLL.LLLLLL.LL.LL.LLLLLLLLLLLLLL.LLLLL.L.LLLLLLLLLLLLLLLL.LL
+LLLLLLLL.LLLL.LLLLL.LLLL.LLL.LLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLL.
+LLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLL.LLLLLLL.LLLLLL.LLLLL.LLLL.LLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLL.L
+LLLLLLLL.LLLL.LLLLL.LLLLLLLL.LLLL..LLLLLLL.LLLLLL.LL.LL.L.LLLLLL.LLLL..LLLLLL..LLLLLLLLLLLLLLLLLLL
+LLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLL
+L......LLLLL..LL.L.....L......L..L....L..LLL.L....LLLLL....L..L...LL.L..L...L...L......LL.........
+LLLLLLLL.LLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLL
+LLLLLLLL.LLLL.LLLLL.LLLLLLL..LLLLL.LLLLLLL.LLLLLL.LLLLL.LLLLLLLL.L.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
+.LLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLL.LLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLL
+LLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLL.L.LLLLLL.LLLLLLLLLLLL
+LLLLLLLL.LLLL.LLLLL.LLLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLL
+LLLLLLLLLLLL..LLLLL.LL.LLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLL.
+LLLLLLLL.LLLL.LLLLL.LLLLLLLL.LLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLL.LLLLLLLLLLLL
+LLL.LLLL.LLLLLLLLLLLLLLLLLLL.L.LLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLL
+LLLLLLLL.LLLL.LLLLL.LLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLLL..LLLL.LLLL.L.LLLLLLL.LLLLLLLLLLLL
+LLLLLLLL.LLLL.LLLLL.LLLLLLLL.L.LLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLL.LL.LLLL.LLLLLL.LLLLLLLLLLLL
+LLLLLLL...LLLLLLLLL.LLLLLLLL.LL.LLLLLLLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLL
+LLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLL.LLLLLLL.LLLLLL.LLLL.LLLLLLLLLLLLLLL.L.LLLLLLLLLLLL.LLLLLLLLLLLL
+LLLLLLLL.LLLLLL.LLL.LLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLL