From fdb08970e773b68b73fccf16b4b32c6f72dc43ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Schw=C3=B6rer?= Date: Sun, 31 Dec 2017 17:53:59 +0100 Subject: [PATCH] blogview_euler_list --- www/data/css/styles.css | 101 +++++++++++++++++++- www/data/css/styles_blogview.scss | 132 ++++++++++++++++++++++++++ www/data/css/styles_config.scss | 3 +- www/data/css/styles_global.scss | 1 + www/data/css/styles_header.scss | 1 + www/data/images/github_band.png | Bin 0 -> 7791 bytes www/fragments/blogview_euler_list.php | 105 ++++++++++++++++++++ www/fragments/eulerpanel.php | 2 +- www/fragments/header.php | 2 +- www/internals/base.php | 32 +++++++ www/internals/euler.php | 3 + www/pages/blog_view.php | 5 +- 12 files changed, 381 insertions(+), 6 deletions(-) create mode 100644 www/data/images/github_band.png create mode 100644 www/fragments/blogview_euler_list.php diff --git a/www/data/css/styles.css b/www/data/css/styles.css index 03617c6..fca8797 100644 --- a/www/data/css/styles.css +++ b/www/data/css/styles.css @@ -1,6 +1,7 @@ body { background-color: #EEE; - color: #CCC; } + color: #CCC; + font-family: serif; } #content { padding-top: 64px; @@ -53,6 +54,7 @@ body { width: 100%; } #headerdiv { + z-index: 999; background-color: #333; display: flex; border-bottom: 1px solid #111; @@ -254,6 +256,103 @@ html, body { margin: 0 0 20px; border-left: 5px solid #CCC; } +.mdtable_container { + overflow-x: auto; } + +.mdtable { + border-collapse: collapse; + text-align: left; + width: 100%; + border: 1px solid #666; } + .mdtable td, .mdtable th { + padding: 3px 10px; } + .mdtable thead th { + background-color: #7D7D7D; + color: #FFFFFF; + font-weight: bold; + border-left: 1px solid #444; } + .mdtable thead th:first-child { + border: none; } + .mdtable tbody td { + border-left: 1px solid #666; + font-weight: normal; } + .mdtable tbody .alt td { + background: #EBEBEB; } + .mdtable tbody td:first-child { + border-left: none; } + .mdtable tbody tr:last-child td { + border-bottom: none; } + .mdtable tbody tr:nth-child(odd) { + background-color: #ccc; } + +#PEB_tableProblems .PEB_tablerowProblems:hover { + background-color: #888; } +#PEB_tableProblems .PEB_TC_Value { + font-family: Consolas, Monaco, "Courier New", Menlo, monospace; } +#PEB_tableProblems .PEB_TC_Value:not(:hover) { + color: transparent; + -o-transition: .5s; + -ms-transition: .5s; + -moz-transition: .5s; + -webkit-transition: .5s; + transition: .5s; } +#PEB_tableProblems .PEB_TC_Value:hover { + color: #333; + -o-transition: .5s; + -ms-transition: .5s; + -moz-transition: .5s; + -webkit-transition: .5s; + transition: .5s; } +#PEB_tableProblems .PEB_TC_Time { + border-radius: 1px; + display: inline-block; + padding: 1px 6px; + min-width: 60px; } +#PEB_tableProblems .PEB_TC_Timelevel_0 { + background-color: #0A0 !important; } +#PEB_tableProblems .PEB_TC_Timelevel_1 { + background-color: #84FF0A !important; } +#PEB_tableProblems .PEB_TC_Timelevel_2 { + background-color: #FF0 !important; } +#PEB_tableProblems .PEB_TC_Timelevel_3 { + background-color: #F60 !important; } +#PEB_tableProblems .PEB_TC_Timelevel_4 { + background-color: #F11 !important; } +#PEB_tableProblems .PEB_TC_Size { + font-family: Consolas, Monaco, "Courier New", Menlo, monospace; } +#PEB_tableProblems .PEB_TC_Size_93 { + float: right; + font-family: serif; + border-radius: 1px; + background-color: #0A0; + display: inline-block; + padding: 1px 6px; } +#PEB_tableProblems .PEB_TC_Size_98 { + float: right; + font-family: serif; + border-radius: 1px; + background-color: #FF0; + display: inline-block; + padding: 1px 6px; } +#PEB_tableProblems a { + color: #333; + display: block; + text-decoration: none; } +#PEB_tableProblems .PEB_TC_Title a { + text-decoration: underline; } + +@media (max-width: 1199px) { + #PEB_tableProblems tr td:nth-child(1), #PEB_tableProblems tr th:nth-child(1) { + display: none; } } +@media (max-width: 767px) { + #PEB_tableProblems tr td:nth-child(1), #PEB_tableProblems tr th:nth-child(1) { + display: none; } + + #PEB_tableProblems tr td:nth-child(3), #PEB_tableProblems tr th:nth-child(3) { + display: none; } + + #PEB_tableProblems tr td:nth-child(4), #PEB_tableProblems tr th:nth-child(4) { + display: none; } } .euler_pnl_base { display: inline-flex; flex-direction: column; diff --git a/www/data/css/styles_blogview.scss b/www/data/css/styles_blogview.scss index f1ca04e..86ffe3d 100644 --- a/www/data/css/styles_blogview.scss +++ b/www/data/css/styles_blogview.scss @@ -56,3 +56,135 @@ border-left: 5px solid #CCC; } +.mdtable_container {overflow-x: auto;} + +.mdtable { + border-collapse: collapse; + text-align: left; + width: 100%; + border: 1px solid #666; + + td, th { + padding: 3px 10px; + } + + thead th { + background-color: #7D7D7D; + color: #FFFFFF; + font-weight: bold; + border-left: 1px solid #444; + } + + thead th:first-child { + border: none; + } + + tbody td { + border-left: 1px solid #666; + font-weight: normal; + } + + tbody .alt td { + background: #EBEBEB; + } + + tbody td:first-child { + border-left: none; + } + + tbody tr:last-child td { + border-bottom: none; + } + + tbody tr:nth-child(odd) { + background-color: #ccc; + } + +} + +#PEB_tableProblems { + .PEB_tablerowProblems { } + .PEB_tablerowProblems:hover { background-color: #888; } + + .PEB_tablecellProblems { } + + .PEB_TC_Value { font-family: $FONT_CODE; } + + .PEB_TC_Value:not(:hover) { + color: transparent; + + -o-transition:.5s; + -ms-transition:.5s; + -moz-transition:.5s; + -webkit-transition:.5s; + transition:.5s; + } + + .PEB_TC_Value:hover { + color: $COL_TEXT_DARK; + + -o-transition:.5s; + -ms-transition:.5s; + -moz-transition:.5s; + -webkit-transition:.5s; + transition:.5s; + } + + .PEB_TC_Time { + border-radius: 1px; + + display: inline-block; + padding: 1px 6px; + + min-width: 60px; + } + + .PEB_TC_Timelevel_0 { background-color: #0A0 !important; } + .PEB_TC_Timelevel_1 { background-color: #84FF0A !important; } + .PEB_TC_Timelevel_2 { background-color: #FF0 !important; } + .PEB_TC_Timelevel_3 { background-color: #F60 !important; } + .PEB_TC_Timelevel_4 { background-color: #F11 !important; } + + .PEB_TC_Size { font-family: $FONT_CODE; } + + .PEB_TC_Size_93 { + float: right; + font-family: $FONT_DEFAULT; + + border-radius: 1px; + background-color: #0A0; + + display: inline-block; + padding: 1px 6px; + } + + .PEB_TC_Size_98 { + float: right; + font-family: $FONT_DEFAULT; + + border-radius: 1px; + background-color: #FF0; + + display: inline-block; + padding: 1px 6px; + } + + a { + color: #333; + display: block; + text-decoration: none; + } + + .PEB_TC_Title a { text-decoration: underline; } + +} + +@media(max-width:1199px) { + #PEB_tableProblems tr td:nth-child(1), #PEB_tableProblems tr th:nth-child(1) { display: none; } +} + +@media(max-width:767px) { + #PEB_tableProblems tr td:nth-child(1), #PEB_tableProblems tr th:nth-child(1) { display: none; } + #PEB_tableProblems tr td:nth-child(3), #PEB_tableProblems tr th:nth-child(3) { display: none; } + #PEB_tableProblems tr td:nth-child(4), #PEB_tableProblems tr th:nth-child(4) { display: none; } +} \ No newline at end of file diff --git a/www/data/css/styles_config.scss b/www/data/css/styles_config.scss index 982b514..0f5648e 100644 --- a/www/data/css/styles_config.scss +++ b/www/data/css/styles_config.scss @@ -6,4 +6,5 @@ $COL_TEXT_DARK: #333; $COL_TRANSPARENT: #FFFFFF00; $FONT_HEADER: Lato, "Helvetica Neue", Helvetica, Arial, sans-serif; -$FONT_CODE: Consolas, Monaco, "Courier New", Menlo, monospace; \ No newline at end of file +$FONT_CODE: Consolas, Monaco, "Courier New", Menlo, monospace; +$FONT_DEFAULT: serif; \ No newline at end of file diff --git a/www/data/css/styles_global.scss b/www/data/css/styles_global.scss index 4b5fb79..e76d873 100644 --- a/www/data/css/styles_global.scss +++ b/www/data/css/styles_global.scss @@ -3,6 +3,7 @@ body { background-color: $COL_BACKGROUND; color: $COL_TEXT_NORMAL; + font-family: $FONT_DEFAULT; } #content { diff --git a/www/data/css/styles_header.scss b/www/data/css/styles_header.scss index 65b940d..9548230 100644 --- a/www/data/css/styles_header.scss +++ b/www/data/css/styles_header.scss @@ -1,6 +1,7 @@ @import 'styles_config'; #headerdiv { + z-index: 999; background-color: #333; display: flex; border-bottom: 1px solid #111; diff --git a/www/data/images/github_band.png b/www/data/images/github_band.png new file mode 100644 index 0000000000000000000000000000000000000000..146ef8a800602169cf78c686fc5a6d138a76bc0a GIT binary patch literal 7791 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 + +
+ +
+ + Fork me on GitHub + +
+ +
+ +
+ +
+

+ +

+ A lot of you probably know Project Euler.
+ For those who don't here a short explanation: Project Euler is a collection of mathematical/programming problems. + Most problems consist of finding a single number and are solved by writing a program in the programming language of your choice. +

+

+ Most people solve these by using normal languages like C, Java, Phyton, Haskell etc. + But you can also go a step further and try solving it with a little bit more exotic languages. +

+

+ So here are my solutions written in Befunge +

+
+

+ Note:
+ Similar to most Befunge content on this site I only used the Befunge-93 instruction-set but ignored the 80x25 size restriction.
+ Still I tries to keep the programs in the Befunge-93 grid size, but that wasn't possible for all. So I guess some programs are technically Befunge-98. +

+
+

+ I have a included javascript runner here, but for one I only enabled it for programs of reasonable sizes (a few soutions had source files in the megabyte range).
+ And also it's not the fastest interpreter and some solution take quite a while to finish.
+ I recommend using BefunExec. I specially made that interpreter for this project. It can run befunge code with around 6.5 MHz (on my machine) +

+ +
+ + + + + + + + + ' . "\r\n"; + + echo '' . "\r\n"; + + echo '' . "\r\n"; + + echo '\r\n"; + echo ''; + echo ''; + echo '' . "\r\n"; + + echo '' . "\r\n"; + + echo '' . "\r\n"; + + echo "\r\n"; + } + ?> + +
Number Title Time Size Solution (hover to reveal)
'; + echo ''; + echo $problem['number']; + echo ''; + echo ''; + echo ''; + echo htmlspecialchars($problem['title']); + echo ''; + echo ''; + echo ''; + echo '
'; + echo formatMilliseconds($problem['time']) . "
'; + echo ''; + echo $problem['width'] . 'x' . $problem['height']; + echo '
'; + echo ($problem['is93'] ? 'Bef-93' : 'Bef-98'); + echo '
'; + echo '
'; + echo '
'; + echo number_format($problem['value'], 0, null, ','); + echo '
+
+
+
\ No newline at end of file diff --git a/www/fragments/eulerpanel.php b/www/fragments/eulerpanel.php index ce7b20a..005c52d 100644 --- a/www/fragments/eulerpanel.php +++ b/www/fragments/eulerpanel.php @@ -1,5 +1,5 @@ Home - Project Euler + Project Euler Blog Programs About diff --git a/www/internals/base.php b/www/internals/base.php index c36bd47..3d82eb2 100644 --- a/www/internals/base.php +++ b/www/internals/base.php @@ -25,4 +25,36 @@ function destructiveUrlEncode($str) { $str = str_replace('+', '_', $str); $str = str_replace('.', '', $str); return urlencode($str); +} + +function formatMilliseconds($millis) +{ + if ($millis < 1000) + { + return $millis . 'ms'; + } + else if ($millis < 10 * 1000) + { + return number_format($millis / (1000), 2) . 's'; + } + else if ($millis < 60 * 1000) + { + return floor($millis / (1000)) . 's'; + } + else if ($millis < 10 * 60 * 1000) + { + return floor($millis / (60 * 1000)) . 'min ' . floor(($millis % (60 * 1000)) / 1000) . 's'; + } + else if ($millis < 60 * 60 * 1000) + { + return floor($millis / (60 * 1000)) . 'min'; + } + else if ($millis < 10 * 60 * 60 * 1000) + { + return number_format($millis / (60 * 60 * 1000), 2) . ' hours'; + } + else + { + return floor($millis / (60 * 60 * 1000)) . ' hours'; + } } \ No newline at end of file diff --git a/www/internals/euler.php b/www/internals/euler.php index 4dce030..436a270 100644 --- a/www/internals/euler.php +++ b/www/internals/euler.php @@ -6,6 +6,9 @@ class Euler { $a = require $f; $a['rating'] = self::rateTime($a); + $a['url'] = '/blog/1/Project_Euler_with_Befunge/problem-' . str_pad($a['number'], 3, '0', STR_PAD_LEFT); + $a['canonical'] = "https://www.mikescher.com" . $a['url']; + $a['is93'] = ($a['width'] <= 80 AND $a['height'] <= 25); return $a; } diff --git a/www/pages/blog_view.php b/www/pages/blog_view.php index 8bf41ee..448013f 100644 --- a/www/pages/blog_view.php +++ b/www/pages/blog_view.php @@ -19,7 +19,7 @@ if ($post === NULL) httpError(404, 'blogpost not found'); - +
@@ -48,7 +48,8 @@ if ($post === NULL) httpError(404, 'blogpost not found'); } elseif ($post['type'] === 'euler') { - include (__DIR__ . '/../fragments/blogview_euler.php'); + if ($subview === '') include (__DIR__ . '/../fragments/blogview_euler_list.php'); + else include (__DIR__ . '/../fragments/blogview_euler_single.php'); } ?>