Mae向きなブログ

Mae向きな情報発信を続けていきたいと思います。

AI vs. 教科書が読めない子どもたち

各章とも興味深い内容でしたが、特に「第3章 教科書が読めない――全国読解力調査」は衝撃的でした。今までの自分の認識は、

生徒は教科書を読めば分かるんだろうけど、面白くなさそうなので読んでいないだけ。読んでみたいと思わせることができればいいのでは…。

というもの。第3章で示されているデータをみると、とんだ勘違いだったと思い知らされました。基礎的読解力が不十分な集団がアクティブラーニングをやってもあまり効果が期待できないというのも納得。今後はいかに基礎的読解力を育めばいいのか、微力ながら考えていきたい。

AI vs. 教科書が読めない子どもたち

AI vs. 教科書が読めない子どもたち

ながい坂

初めて山本周五郎の本を読んでみました。徒士組という下級武士の子に生まれながらも、学問と武芸に励み次第に頭角を現していく三浦主水正の物語。どんな境遇にあっても、どんな逆境にあっても志を掲げ、事を成し遂げる三浦主水正に魅了された本でした。

時間を見つけてぜひ読み返したい一冊です。

ながい坂(上)

ながい坂(上)

ながい坂(下)

ながい坂(下)

銃・病原菌・鉄

サピエンス全史』は、「なぜ、私たち現生人類が食物連鎖の頂点に立ちえたのか?」を考えさせてくれる本。

本書は、「世界の富や権力は、なぜ現在あるような形で分配されてしまったのか?なぜほかの形で分配されたなかったのか?」について考えさせてくれる本です。

どちらも興味深いものでした。

銃・病原菌・鉄 上巻

銃・病原菌・鉄 上巻

銃・病原菌・鉄 下巻

銃・病原菌・鉄 下巻

Range Minimum Query (RMQ)

AOJの「Range Minimum Query(RMQ)問題」に取り組んでみました。

要約すると、数列A = \{a_0, a_1,...,a_{n-1}\}に対し、次の2つの操作を行うプログラムを作成する問題です。

  • update(i,x): a_ixに変更する。
  • find(s, t): a_s, a_{s+1},...,a_tの最小値を出力する。

単純で非効率なアルゴリズムならすぐに思いつきますが、効率の良いアルゴリズムとなると先人の知恵をお借りした方が良さそうです。参考サイトのスライドを頼りにというか、ほとんどそのままRubyで実装してみました。再帰を用いたqueryメソッドの実装が素晴らしいなと思います。

rmq.rb

参考

参考サイトのスライドの最初の方に、Union-Find木についての説明がありますが、これについて以前取り組んだものが以下です。

魔法陣をJavaScriptで

今週、C言語の2次元配列を扱う授業の中で、魔法陣に取り組んでみたのですが、興味関心を引くためにJavaScriptで作ってみました。

魔法陣のアルゴリズム

1. 1行目の中央に1を入れる。
2. 2からn*n(n:奇数)まで以下を繰り返す。
    2-1. 右斜め上に進む。このとき
        (a) すでに数字が入っているときは、すぐ下へ
        (b) 上に飛び出した場合は、一番下へ
        (c) 右に飛び出した場合は、一番左へ
    2-2. 数字を埋める

magic_square.html

実行動画


魔法陣

関連

Sinatra+ActiveRecordでBBSを作ってみる

Sinatra 入門 - Qiita」は、Sinatra, ActiveRecordの初歩について学ぶのに非常に分かりやすくまとめられていると思います。概要を学ぶのに参考になったのですが、

以降、そのままだとコメントの削除機能など、動作しない部分があったので、自分の勉強を兼ねて作ってみました。

まず、ファイル構成は以下の通りです。

$ tree sinatra_lessons
sinatra_lessons
├── bbs.db
├── import.sql
├── main.rb
└── views
    └── index.erb

1 directory, 4 files

main.rb

# coding: utf-8
require "sinatra"
require "sinatra/reloader"
require "active_record"

ActiveRecord::Base.establish_connection(
  "adapter" => "sqlite3",
  "database" => "./bbs.db"
)

class Comment < ActiveRecord::Base
end

helpers do
  include Rack::Utils
  alias_method :h, :escape_html
end

get "/" do
  @title = "BBS(掲示板)"
  @comments = Comment.order("id desc").all
  erb :index
end

post "/new" do
  Comment.create({:body => params[:body]})
  redirect '/'
  erb :index
end

post "/delete" do
  Comment.find(params[:id]).destroy
end

import.sql

create table comments(
    id integer primary key,
    body text
);

views/index.erb

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <title><%= @title %></title>
</head>
<body>
  <h1><%= @title %></h1>
  <ul>
    <% @comments.each do |comment| %>
    <li data-id="<%= comment.id %>">
      <%= h comment.body %><button class="deleteCmd">Delete!</button>
    </li>
    <% end %>
  </ul>
  <h2>Add new</h2>
  <form method="post" action="/new">
    <input type="text" name="body">
    <input type="submit" value="post!">
  </form>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    <script>
    $('.deleteCmd').click(function(){
        var el = $(this).parent();
        if (confirm('are you sure to delete?')){
            $.post('/delete',{
                id: el.data('id')
            },function(){
                el.fadeOut(800);
            });
        }
    })
    </script>
</body>
</html>

実行動画


Sinatraで掲示板を作ってみよう

参考

8年越しの花嫁 奇跡の実話

子供が買った本が目についたので、どんな本を読んでいるんだろうと何気無く手に取ってパラパラと読み始めたら、途中でやめられなくなって最後まで一気に読んでしまいました。

読み終えて、調べて見ると最近、映画化もされているんですね。最近の事情に疎いので全く知らなかったのですが、是非、映画も見てみたいと思うような感動の物語(実話)でした。

2018年最初に読み終えた本が、この本で良かったと思います。

ノベライズ版 8年越しの花嫁 奇跡の実話

ノベライズ版 8年越しの花嫁 奇跡の実話


【2017年12月16日映画公開決定】8年越しの結婚式~アーヴェリール迎賓館岡山(T&G)