Google ColaboratoryでNimを実行する
Google ColaboratoryでNimが扱えるそうなので,慣れるために適当な関数を作って慣れてみようと思います.
有料枠設定にしていますが,下記のサイトで他の記事もみれます.youtubeの投げ銭的な物として,お考えください.
Google Colabのファイル構成
プロジェクトディレクトリはfirst_nimとしています.度々,省略しています.
first_nim
├── Nim4Colab_first.ipynb
├── reverse.nim
└── reverse
Google Driveと連携
Google ColabとGoogle Driveを連携させ,作業ディレクトリ(ここではfirst_nim)に移動します.
# Google ColabとGoogle Driveを連携
from google.colab import drive
drive.mount('/content/drive')
# ディレクトリの移動
%cd /content/drive/My\ Drive/Nimnim/first_nim
!ls
nim4colabのインストール
Google Colab で nimコマンドを使用するためのライブラリであるnim4colabをインストールします.
!pip install git+https://github.com/demotomohiro/nim4colab.git
%load_ext nim4colab
nimのコードを作成
文字列を返すコードをお試しで作成します.
このコードで現時点で解読できていることを以下に示します.
・%%writefile ***.nimで出力するファイル名を指定します.
・「proc reverse(s: string): string」は,Pythonでいう「def reverse(s)」のようです.
・「echo "Reversed: ", reverse(str1)」は,Pythonでいう「print("Reversed: ", reverse(str1))」のようです.
・「high(s)」は,Pythonでいう「len(s)」のようです.
・「for i in countdown(12, 0)」は「12, 11, 10,・・1, 0」と出力される.
・「for i in countup(0, 12)」は「0, 1, 2,・・11, 12」と出力される.Pythonでは「for i in range(0, 12)」となる.
・「result = ""」 で「result.add "a" 」は,5回実行されると「result = "aaaaa"」となる.Pythonでは「result =+ "a"」となる.
# セル内のreverse関数をreverse.minとして書き出し
%%writefile reverse.nim
proc reverse(s: string): string =
result = "" # 暗黙的なresult変数
echo high(s)
for i in countdown(high(s), 0):
echo i
result.add s[i]
proc not_reverse(s: string): string =
result = "" # 暗黙的なresult変数
echo high(s)
for i in countup(0, high(s)):
echo i
result.add s[i]
var str1 = "Reverse This!"
echo "Reversed: ", reverse(str1)
echo "------------------------------"
echo "Not Reversed: ", not_reverse(str1)
nimのコードの実行
作成したnimファイルは「nim complie –run reverse.nim」or 「nim c -r reverse.nim」で実行できます.
-d:release を追記すると,デバック情報が書き込まれないので軽くなるようです.
%nim c -r reverse.nim
# %nim c -d:release reverse.nim
出力は以下のようになる.
Hint: used config file '/root/nim-stable/nim/config/nim.cfg' [Conf]
Hint: used config file '/root/nim-stable/nim/config/config.nims' [Conf]
....CC: reverse.nim
Hint: [Link]
Hint: 22434 lines; 0.394s; 25.59MiB peakmem; Debug build; proj: /content/drive/My Drive/Nimnim/first_nim/reverse.nim; out: /content/drive/My Drive/Nimnim/first_nim/reverse [SuccessX]
Hint: '/content/drive/My Drive/Nimnim/first_nim/reverse' [Exec]
12
12
11
10
9
8
7
6
5
4
3
2
1
0
Reversed: !sihT esreveR
------------------------------
12
0
1
2
3
4
5
6
7
8
9
10
11
12
Not Reversed: Reverse This!
まとめ
Nimに慣れるために適当な関数を作成してみました.
次は,学習しやすいようにNotebook風に実行できるようにします.
参考サイト
ここから先は
¥ 100
この記事が気に入ったらチップで応援してみませんか?