1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kaggle Notebook上でLinuxコマンドを使って『プロデル』を動かしてみた

Posted at

はじめに

今回、日本語プログラミング言語である「プロデル」について、Kaggle Noteboook上でLinuxコマンドを使ってコードを実行できるか試してみました。

Kaggle Notebook 環境

KaggleのバックエンドはUbuntuベースのLinux環境であり、NotebookにはPythonの実行環境が備わっていますが、Linuxコマンドを使い各種言語を実行することも可能です。利用はフロントエンドで完結する範囲に限定されますが、自分のPC環境に手を加えることなく、いろいろ試せるので便利です。

MONOのインストール

MONOは、C#をはじめとする.NETアプリケーションをクロスプラットフォームで開発および実行するためのオープンソースのフレームワークです。Microsoftの.NET Frameworkに基づいており、LinuxやmacOS、Windowsなど、異なるプラットフォームで動作するよう設計されています。

LinuxコマンドでMonoをインストールします。

!apt install ca-certificates gnupg -y
!gpg --homedir /tmp --no-default-keyring --keyring /usr/share/keyrings/mono-official-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
!echo "deb [signed-by=/usr/share/keyrings/mono-official-archive-keyring.gpg] https://download.mono-project.com/repo/ubuntu stable-focal main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
!apt install mono-devel -y

MONO版プロデルをインストール

続いて、MONO版プロデルをインストールします。

!wget -O produire-mono.tar.gz https://produ.irelang.jp/downloads/mono/latest.php?type=tar
!tar zxvf produire-mono.tar.gz

実行例1: プロデルでHello World

  • rdrファイルの作成
    codeの中にプログラム文を記載し、rdrファイルとして保存する。
code = """
「Hello, Produire!」と表示する
「こんにちは、プロデル!」と表示する
"""

with open("hello.rdr", "w") as f:
    f.write(code)
  • rdrファイルの実行
!mono pconsole.exe hello.rdr

# Hello, Produire!
# こんにちは、プロデル!

実行例2: Harshad数

以前の記事でも取り上げた問題を例にします。

整数Xを十進法で表したときの各桁の数字の和をf(X)としたとき、Xがf(X)で割り切れる場合、Xはハーシャッド数です。
整数Nが与えられるので、ハーシャッド数かどうか判定してください。

実行例2-1: 引数の値を直接コードに書き込む

  • rdrファイルの作成
code2 = """
X0=「12」
Lは[X0]の文字数。
M=0
X=X0
iを1から1ずつ増やしながらL+1まで繰り返す。
  M=M+X%10
  Yは、X/10を切り捨てたもの。
  X=Y
繰り返し終わり。
ANS=X0%M
もしANSの整数が0ならば、「Yes」を表示。
そうでなければ、「No」を表示。
"""

with open("harshad.rdr", "w") as f:
    f.write(code2)
!mono pconsole.exe harshad.rdr 

# Yes

実行例2-2: 引数情報を別ファイルから渡す

  • txtファイルの作成
code1="""12"""

with open("input.txt", "w") as f:
    f.write(code1)

*rdrファイルの作成

code2 = """
X0は、プログラムの起動時設定(1)から読み込んだもの
Lは[X0]の文字数。
M=0
X=X0
iを1から1ずつ増やしながらL+1まで繰り返す。
  M=M+X%10
  Yは、X/10を切り捨てたもの。
  X=Y
繰り返し終わり。
ANS=X0%M
もしANSの整数が0ならば、「Yes」を表示。
そうでなければ、「No」を表示。
"""

with open("harshad.rdr", "w") as f:
    f.write(code2)
!mono pconsole.exe harshad.rdr input.txt

# Yes

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?