LoginSignup
12
3

More than 3 years have passed since last update.

Delphi で湯婆婆を実装してみる

Last updated at Posted at 2020-11-21

はじめに

ネタに乗ってみました。

Delphi による湯婆婆は @e99h2121 さんが既に投稿されていたので、

私はコンソールアプリケーションで書いてみることにしました。

コード

Delphi 10.4 Sydney で書いてみました。

Yubaba.dpr
program Yubaba;
{$APPTYPE CONSOLE}

uses
  System.SysUtils;

begin
  Randomize;
  Writeln('契約書だよ。そこに名前を書きな。');
  var name: string;
  Readln(name);
  Writeln('フン。', name, 'というのかい。贅沢な名だねぇ。');
  var newNameIndex := Random(name.Length);
  var newName := name.Substring(newNameIndex, 1);
  Writeln('今からお前の名前は', newName, 'だ。いいかい、', newName, 'だよ。分かったら返事をするんだ、', newName, '!!');
end.

SysUtils を使わないようにすれば (標準ルーチンだけで書けば) 行数を減らせます。

Yubaba.dpr
program Yubaba;
{$APPTYPE CONSOLE}
begin
  Randomize;
  Writeln('契約書だよ。そこに名前を書きな。');
  var name: string;
  Readln(name);
  Writeln('フン。', name, 'というのかい。贅沢な名だねぇ。');
  var newNameIndex := Random(Length(name));
  var newName := Copy(name, newNameIndex + 1, 1);
  Writeln('今からお前の名前は', newName, 'だ。いいかい、', newName, 'だよ。分かったら返事をするんだ、', newName, '!!');
end.

実行結果です。
image.png
まぁ、そうなるな。

See also:

追記

わざわざ SubString()Copy() を使っているのは、空の文字列が入力された時にエラーになるからです。次のような書き方もできるのですが、空の文字列が入力された時にエラーになってしまいます。

Yubaba.dpr
program Yubaba;
{$APPTYPE CONSOLE}

uses
  System.SysUtils;

begin
  Randomize;
  Writeln('契約書だよ。そこに名前を書きな。');
  var name: string;
  Readln(name);
  var newNameIndex := Random(Length(name));
  var newName := name.Chars[newNameIndex];
  Writeln('フン。', name, 'というのかい。贅沢な名だねぇ。', sLineBreak, '今からお前の名前は', newName, 'だ。いいかい、', newName, 'だよ。分かったら返事をするんだ、', newName, '!!');
  readln
end.
Yubaba.dpr
program Yubaba;
{$APPTYPE CONSOLE}
begin
  Randomize;
  Writeln('契約書だよ。そこに名前を書きな。');
  var name: string;
  Readln(name);
  Writeln('フン。', name, 'というのかい。贅沢な名だねぇ。');
  var newNameIndex := Random(Length(name));
  var newName := name[newNameIndex + 1];
  Writeln('今からお前の名前は', newName, 'だ。いいかい、', newName, 'だよ。分かったら返事をするんだ、', newName, '!!');
end.

おわりに

いろんな言語のコードが読めて面白いですね。

See also:

12
3
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
12
3