2022-03-13に投稿

COBOLの限界、VB.NETの限界

競技プログラミングでいろいろ試行して知見を得た。
世にPython,Ruby等の記事は数多いが、マイナープログラマーにはある種ひょっとしたら興味が無いかもしれない。
そんなマイナープログラマーがどこまで通用するか気になったのが本稿の執筆動機だ。

まず、COBOLは整数部+小数部合算で36「桁」まで扱えるので桁範囲は世間で思われているより広い。
2022年現在の、AtCoderのA問題、B問題であれば、インターネット検索の知識を総動員すれば意外と解けてしまう。
ただし、S9に癖があり、入力によってマイナスからプラスで答えも連動して変動する場合、解く方法が見つけられ無い。
たとえば以下のような問題だ。プラスの場合にはACだが、マイナスの場合にWAとなる。無論、VB.NETでは全てACである。
※https://atcoder.jp/contests/abc239/submissions/29490894 COBOL
※※https://atcoder.jp/contests/abc239/submissions/29494347 VB.NET

他方、VB.NETはほとんどの問題で上記COBOLよりは楽に解けるものの、COBOLはAC出来て、VB.NETではAC出来ないものがある。これはVB.NETのAtCoderバージョン上、BIG Integerが無いため、LongやDecimalを超える値の範囲となると実行エラーとなる。
たとえば以下のような問題だ。最大が10^18のため、標準入力がLongやDecimalの範囲を超えると通らない。COBOLであれば36桁まで扱えるためACとなる。
※https://atcoder.jp/contests/abc238/submissions/29495358 VB.NET
※※https://atcoder.jp/contests/abc238/submissions/29132392 COBOL

本稿執筆者のようなCOBOLerやVB.NETerにとって、本稿が少しでも役に立てば望外の喜びである。

ツイッターでシェア
みんなに共有、忘れないようにメモ

oooonduke

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント