Haskellを始めた感想(インストール編)

この度、すごいHaskellの著者をフォローしていた結果興味を持ったので、初めてみました。

内容についてはまだ序盤なので、後々まとめて書いていきたいです。

ここではインストールの感想だけ載せます。

 

<普通>

ここでインストール

動く!  とても簡単ですね。

www.haskell.org

 

<今回>

①上記のサイトでインストール

 

②起動

f:id:tomato9071:20171030020234p:plain

多分、学校の授業で無理やりmingwぶち込まれたせいで、mingw32とmingw64が混ざってるのかな??消すか!(当方TOEIC500未満の英弱のため、質問が出来ない)

 

f:id:tomato9071:20171030020459p:plain

http://akrmys.com/public/mingw/mingw.html.ja

あっ…(cygwinを学校の授業でぶち込まれたり、VisualStudioでmigwが混ざってたりで、本当に消すべき範囲が分からない)

 

④消せない( ^ω^)・・・?

f:id:tomato9071:20171030020705j:plain

(google画像検索--野郎オブクラッシャー)

よし、別の方法を

 

⑤そういえばVisualStudioにあったりしないかな(当方VisualStudioを常用)

f:id:tomato9071:20171030021149p:plain

 

⑥これは…!

f:id:tomato9071:20171030021333j:plain

 (google画像検索--流れ変わったな)

コロンビア! 

 

⑦早速インストールする

.........

///////

........

VScodeにメモリ4GB使用され、タスクマネージャーがフリーズ。

また、環境構築の方法が慣れない方法のため理解が追い付かず断念

なお参照元

qiita.com

f:id:tomato9071:20171030021924j:plain

(google画像検索---涙 ネタ)

 

⑧そういえばUbuntu for windowsTwitterで拝見してインストールしていました。

 

⑨またこれも見かけてたなぁ…

f:id:tomato9071:20171030024831p:plain

⑩やってみた

f:id:tomato9071:20171030025016p:plain

・・・?なんじゃこれ

 

 

⑪色々ググってみた結果、こんなコマンド試した

(bashなどは知らないので、どのコマンドも初めて知った)

$sudo apt update

$sudo apt upgrade

$sudo apt-get update

 

qiita.com

qiita.com

 

⑫もう一回やってみた

f:id:tomato9071:20171030025617p:plain

f:id:tomato9071:20171030025759p:plain

f:id:tomato9071:20171030021333j:plain

 

結論:

コマンドプロンプトで出来ない理由は分からなかった(英強なら出来たかも)

ubuntuのアップデートコマンド初めて知った…

・もしwindowsでエラーが出たら、ubuntu for windows導入した後諸々アップデートしてから、公式サイトのubuntu用導入方法を実行しよう。

・深夜3時なのでちょっと眠い

 

今後:

土日で凄いH本を5章中盤まで読みましたが、まだ標準入出力ですらないので、もう少し読みたいです。やったらまた感想書きたい。

 

 

補足

ここの環境構築を行うと、プロジェクトとして起動は可能になりました。

ただ、単に練習のためにやるには少し大掛かりになりそうで辞めました(失礼)

もう少し本を読み進めたらこちらのやり方を使うかもです。

sites.google.com

Unityで汎用性高そうな関数(練習)

現在Unityでゲーム開発をしてますが、

どこでも使えそうな関数がいくつか見つかったり出来たりしたので載せます。

using System.Linq;
using UnityEngine;
using UnityEngine.UI;

/* 
 * 他の場所でも使えそうな汎用的関数をまとめてあります。
 * 
 */

namespace Assets.Script.Common
{
    public static class UsefulFuncs
    {

        /*
         * 画像パスからSpriteオブジェクトを生成
         * 引数 :画像パス
         * ※    :assets直下のResourcesフォルダからの相対パスにすること
         *    :これは、途中使用するResources.Loadによる作用です
         * 返り値:画像パスのSpriteオブジェクト
         */
        public static Sprite Path2Sprite(string path)
        {
            Texture2D texture = Resources.Load(path) as Texture2D;
            return Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
        }


        /*
         * Spriteオブジェクトを、オブジェクトのimageに貼り付け
         * 引数 :Spriteオブジェクト, 貼り付け先のオブジェクトパス
         * ※  :言わずもがな、オブジェクトパスはHierarcyにおけるもの
         *    :GameObject.Findの引数に出来れば何でも良い
         * 返り値:無し
         */
         public static void SetSprite2Object(Sprite sprite,string objPath)
        {
            GameObject.Find(objPath).GetComponent<Image>().sprite = sprite;
        }


        /*
         * 画像パスの画像を、オブジェクトに貼り付け
         * 引数(1つ目) :画像パス、貼り付け先のオブジェクトパス
         * 引数(2つ目) :画像パス、貼り付け先のGameObject
         * 返り値:無し
         */
         public static void SetImage2Object(string imgPath,string objPath)
        {
            SetSprite2Object(Path2Sprite(imgPath), objPath);
        }
         public static void SetImage2Object(string imgPath,GameObject obj)
        {
            obj.GetComponent<Image>().sprite = Path2Sprite(imgPath);
        }


        /*
         * オブジェクトの複製(ジェネリックメソッド版)
         * 引数 :複製元
         * 返り値:複製物
         * サイト:ttp://l-s-d.sakura.ne.jp/2016/04/class_obj_copy/
         * 
         * 使い方:
         * var hogeA = new HogeParam();
         * HogeParam hogeB;
         * hogeB = UsefulFuncs.DeepCopy(hogeA); <=これ
         */
         public static T DeepCopy<T>(T target)
        {
            T result;
            System.Runtime.Serialization.Formatters.Binary.BinaryFormatter b =
                new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
            System.IO.MemoryStream mem = new System.IO.MemoryStream();
            try
            {
                b.Serialize(mem, target);
                mem.Position = 0;
                result = (T)b.Deserialize(mem);
            }
            finally
            {
                mem.Close();
            }
            return result;
        }


        /*
        * すべての子オブジェクトを返します
        * 引数 :self : GameObject 型のインスタンス
        *     includeInactive : 非アクティブなオブジェクトも取得する場合 true
        * 返り値:すべての子オブジェクトを管理する配列
        * サイト:ttp://baba-s.hatenablog.com/entry/2014/07/29/082441
        */
        public static GameObject[] GetChildren(
            this GameObject self,
            bool includeInactive = false)
        {
            return self.GetComponentsInChildren<Transform>(includeInactive)
                .Where(c => c != self.transform)
                .Select(c => c.gameObject)
                .ToArray();
        }
    }
}

約2週間のまとめ(7/28~~8/08)

テスト:

雑にまとめると

・確率統計概論

 何かくっそむずいんですが。Bくればいいです、はい。

論理回路

 まぁ余裕のよっちゃんな感じでした

 追記:テスト返却されたら92/100でした。8点問題が2点だったし、シカタナイネ。

 結構サボったのでA確定です、はい。

情報理論

 かなり読みを働かせたつもりが、完全デレましたね。

 授業聞いてなくても3~4割取れます。無駄に対策してたので素直にA+です。

・回路理論

 答えは全部あってました。

 途中式が結構雑なので、採点基準によってA~Fで彷徨います。

こんな感じ。

単位怪しいのは、回路理論とCBDくらいでした。フル単したいですね。

 

 

その後:

・A+plus

 受講した授業約13個は多分全部200~500字でレビューしました。

ドミニオンオンライン

 見つけたので始めました。AI相手になぶりなぶられの感じです。

・PUBG

 結局0killステルスでtop10食い込むギリギリが限界です。

 もっと最適化してください。現在平均FPS6~8でプレーしてます。

 なお、視点移動のラグは平均1.2秒(体感)です。kill何て無かった。

・OUTLAST実況

 沢山見ました。

 OUTLAST1--既100% OUTLAST_DLC--0%⇒100%(せのびさんにて)

 OUTLAST2--0%⇒70% (そてるさんにて)

・Unity

 OpenBookで4話⇒7話

7/28 中間報告2

今日は信号処理とARがありました。

 

・信号処理

中間が良かったので、ひたすら演習問題などを凝視していました。

手を全く動かさずに勉強しましたが、多分平均点は来ました。

ギリギリA+来るといいなぁ・・・

 

・AR

優勝です。最近英語が読めなかったので、

最終手段の文法分解戦術使いました(from 東進授業)。

何とか最後まで行きました。

日頃の行いがちょっと悪いので、Bかもです。

 

.

.

.

.

土日挟むので、PUBGやっちゃいます

7/27 テスト中間報告

インド人を右に

「なら日本人は左に」  とまとです。

 

テストの中間報告です。

・プロA

リファレンス無しに、コードを丸ごと書かせる… 無理ですね!

大問1,2はほぼ満点だと思うので(慢心)、A+くれないかな~~

 

微分方程式

ん~~、原因は知らんけど、もしかして先生キレてる?

先生の口調や準備が若干変だった印象。

テスト内容としては、

  ・授業を聴いていれば簡単に     解ける問題1問

  ・授業を聴いていると多分…?    解ける問題1問

  ・授業聞いても解けねーよバーカバーカという問題1問

の構成。

簡単に解ける問題以外は、完答率3割切るのでは・・・? Bくれ!

 

・アルゴリ

圧倒的対策の成果が出ました!優勝!

事前予想は出席点関連でAでしたが、

皆テストの点数低そうだからA+ワンチャン!

テスト内容としては、

  ・あれ~?ふざけてるの?

以上。

この授業の目標はもしかして、

アルゴリズムを用いたプログラミング能力の向上」

ではなくて

アルゴリズムを用いるんじゃねぇ!  

 てめぇがアルゴリズムになるんだよ!(迫真)」

な気がしました(割と真面目に)。

 

・80分の試験に手動逐次探索系を5回以上やらせる

・コードが出てこない(Twitterで指摘されて気づいた)

のはちょっと理解できないですね…

典型的な「日本らしい」教育なんじゃないですかねぇ(呆れ)

AGC018

この1週間殆どプログラミングしてませんでした

(テスト早く滅んでくれ)。

そのせいか否か、今回のAGCは447位(700点)でした。

 

A問題:

え、無限に色んな場所作れるじゃん、え、どうすんの!?!?

Twitterのおかげで、最大公約数分かればいいのだと言われてやっと納得しました)

 

B問題:

一番集まる競技αにN人集まってるとする。 このとき、αを開催している限りは必ず答えがN以上になってしまう。 だから、N未満の答えを探そうとするとαを開催してはいけない。 後はこれを帰納的にこれをやって行けば良い。

こんな感じです

 

C問題:

何か見たことありますが難しです。

 

D問題:

最短辺の両端それぞれを初手として、木の最遠点に飛んでいくことをN-1回やってみました。

参考はAOJのプロコン本です。

サンプル2は正しかったのですが、サンプル1で1小さくでました。

小さく出たので、やはりより良い初手があるのだろうなぁと思いながら終わりました。

(なお、提出して見たらそもそもTLEでした)

 

レート変化がまだ出ないので、ここまでで終わります。

追記:1543→1558

期末現状まとめ

試験結果

・情報数学ーー皆中間酷かったのね… 凄い簡単でした(小並感)多分B,ギリA?

・ベクトルーー5分ほど遅刻したけど、試験開始が5分遅れた結果セーフ。多分A+

 

進捗or予定

・回路理論ーー生徒に授業させないでください。先生が授業して。

情報理論ーー詰み

・プロAーーー全体的に一度漁ったからのんびりしてる。時々TLに流れる質問?を

       試験の練習として何も調べずに答えて対策としてる。

論理回路ーー復習ビデオは一通り見た。プロA終わり次第レポートを始める予定。

・確率統計ーー教科書をカイの二乗分布あたりの所まで読書した。

微分方程ーー教科書の例題全部写経すれば、多分何とかなるでしょ

・アルゴリーーソートが苦手だから、そこやる予定。

・信号処理ーー答え見ながら問題見てやり方理解しておけばいいっしょ

 

ヤバそうな所

・回路理論ーー教科書読むしか手段が無いせいで、教科書理解できなかった章以降が

       まったく分かってねぇ!!!詰んでる程度は3倍アイスクリーム!

・確率統計ーー理論は良いんだ…演習が終始存在しないから、テストが怖い

・信号処理ーー中間良かった結果…  後は察してくれぇ!

情報理論ーー上記同。更に演習要素少なすぎ。教科書も無くね?