カテゴリー
ネットのサービス

不条理な(Absurd)トロッコ問題

不条理なトロッコ問題(Absurd Trolley Problems)は、トロッコ問題の派生形に対してみんな答えるwebサービスです。

Absurd Trolley Problems のトップページ

一問目は基本といえる、オリジナルのトロッコ問題。放置する(Do nothing)とそのままレールを直進するトロッコは、5人の人を轢いてしまいます。しかし、レバーを引く(Pull the lever)ことによってトロッコは軌道をそれ、別の線路の1人の人を轢く代わりに、もともと犠牲になるはずだった5人は助かります。

能動的に介入すれば犠牲者を減らせますが、一人救うために介入することは果たして良い事なのか? という答えの出ない難しい問題として有名です。

どちらを選んでも、それを選んだ側の割合、反対側を選んだ人の割合が表示されます。サイトを訪れた他の人たちの選択に自分の考えは近いか、外れているか、がその場でわかるというわけです。

そして、この基本問題以外に数多くのバリエーションが続きます。犠牲者の数が違ったら? 年齢が違ったら? 自分が含まれていたら? 近い親戚だったら? 自分と利害関係があったら? 横になっている人が希望していたら? 他の動物、クローンやロボット、などなど、真面目にありそうな問題から完全にふざけてるような問題まで。現時点で30問弱あります。

すべて答えると、あなたの選択によって犠牲になった人の人数もカウントしてくれます。僕の結果は55でした…

人の死をゲームにするという不謹慎さはあるのですが、それを言うとオリジナルのトロッコ問題もそうなんですよね。思考実験として極端な選択肢を提示しているし、それがショッキングだからこそ広まったのでしょうけど。

イラストが脱力感溢れているのが、問題の重さを軽くしてくれているかもしれません。

via Hacker News

カテゴリー
ネットのサービス

How to professionally say – より「良い」ビジネス英語表現を探せるwebサービス

How to professionally say(プロっぽく話す方法) は、英語のフレーズの言い換えを提案してくれる検索サービスです。

例えば、”That meeting sounds like a waste of my time”(その会議は時間の無駄っぽい)は、次のように言い換えられるそうです。

“I’m unable to add value to this meeting but I would be happy to review the minutes.”

私が参加してもこの会議の価値を高めることはできませんが、議事録はぜひ読ませていただきたいです。

検索ボックスに単語や一部のフレーズを入れると、関係しそうな言い換えを提案してくれます。

「ググれ(Google That)」を入れると、

The internet is a great resource for these types of questions and I am available to clarify elements that you are not able to find online.

この種類の疑問に関してはインターネットに有用な情報があります。あなたがオンラインで見つけられない要素を明らかにするためにお手伝いできるでしょう。

オトナですね。(ホントか?)

「メールに返事してよ」「いちいち指示しないで」「前にもそれ言った」「それ私の仕事じゃないよね」「連絡すんな」「意味のないことだよ」「そんな報酬でできるか」といった、そのまま言うと角が立つフレーズにも、上品で素敵な代替案を出してくれます。

Next.js + Tailwind CSS で作られたサイトのソースコードは GitHub に公開されています。

元々ジョークサイトのつもりで作られたそうですが、Hacker News のトップページを飾りいろいろと反響が来たことから、スコープを広げて意味のあるサービスにできるかも、と作者の @AkashWhoCodes さんは考えているそうです。

本当のビジネスでこれらの言い換えを使うのは少し考えた方がいいと思いますが、英語の言い換え表現をいろいろと見てみるのは勉強になるし、慇懃無礼にならない程度にエッセンスを取り入れることには意味があるのかなと思いました。

via Hacker News

カテゴリー
fun

Folders.py – ディレクトリ構成(だけ)で書く変態プログラミング言語 Folders の Python 実装

Folders.py は、難解(esoteric)プログラミング言語と言われる変わったプログラミング言語のひとつ Folders の Python による実装です。

オリジナルの Folders 処理系は 2015年に C# で書かれたということです。

  • プログラムはディレクトリの階層構造として記述される
  • フォルダ内のファイルはすべて無視される
  • 文や式はフォルダ内にあるサブフォルダの個数によって定義される

コマンドの定義はこんな感じ。

コマンド サブフォルダの数 詳細(引数など)
if 0 folders Second sub-folder holds expression, third holds list of commands
while 1 folder Second sub-folder holds expression, third holds list of commands
declare 2 folders Second sub-folder holds type, third holds var name (in number of folders, ex. zero folders becomes “var_0”)
let 3 folders Second sub-folder hold variable name (in number of folders), third holds an expression
print 4 folders Second sub-folder holds expression
input 5 folders Second sub-folder holds variable name

Expression, Type も同じような表で、サブフォルダの個数と改装で定義されます。

サンプルの加算プログラムを読んでみる

サンプルディレクトリ(プログラム)が6種類ついてきているので少し眺めますが、こんな感じなのでパッと見ても何がなにやら。以下は一番短そうな AddTwoNumbersOrStringsです。

実行結果はこんな。2 と 5 を入力すると 7 が返ってきます。

PS > Folders .\AddTwoNumbersOrStrings\
2
5
7
PS >

この二つの値を足す Folders プログラムはこちら。

フォルダはソート順に読まれます。

まず、1つ目のサブフォルダ(1 – Input)の1番目のサブフォルダ(1 – init)の中にフォルダが5つあることから、ユーザー入力を受け取る Input コマンドだとわかります。2番目のサブフォルダ(2-name)はフォルダが0個なので変数0に値が格納されます。

2つ目のサブフォルダ(2 – Input 2)は、同じく1番目のサブフォルダ中のフォルダが5個なので Input コマンド。2番目のサブフォルダ(2-name)中のフォルダが1個なので変数1に値が格納されます。

最後、3つ目のサブフォルダ(3 – Print)は、1番目のサブフォルダ(1 – init)中のフォルダ数が4個なので Print コマンド。Print コマンドは2つ目のサブフォルダに式(2 – expression)を取ります。

式の1番目のサブフォルダ(1 – init)内のサブフォルダは1個であることから、この式は Add 式。2番目のフォルダ(2 – expression 1)の式を加算し、3番目のフォルダ(3 – expression 2)の式を返します。

2番目の式はサブフォルダから変数0、3番目の式は変数1を指すため、初回の Input と2回目の Input でそれぞれ格納した値が加算され、結果がコンソールに出力されます。

…と、いう解釈で合ってると思うのですが。試しに、加算式のところのフォルダ

AddTwoNumbersOrStrings / 3 - Print / 2 - expression / 1 - init

内にもう2つフォルダを作って動かしてみると、

PS > Folders .\AddTwoNumbersOrStrings\
2
5
10
PS >

と、2つの数の乗算になりました。

フォルダ名もファイルも関係ない

サンプルプログラムでは、フォルダに連番の数字やコマンド名などがわかりやすく入っていて、一見するとこのフォルダ名を見て動いてるのではと思うかもしれませんが、これはわかりやすさのためにつけてくれている名前なだけで、普通のプログラミング言語でいえばコメントにあたるようです。

サブフォルダの順番に意味がある場合があるので、ソート順でフォルダ名をつける必要があります。

実際、適当にフォルダ名を変えても問題なく動きました。

そして、GitHub で公開されていることから全フォルダに .gitkeep が置いてありますが、フォルダの中のファイルは何でも構いません。空でもいいし、好きなだけファイルを置いても動作に影響はありません。

Folders 言語の利点

ドキュメントにも書かれていますが、Windows ではディレクトリをいくつもっても、ディスク上のサイズが増えることはありません。先ほどの AddTwoNumbersOrStrings プログラムのフォルダのプロパティを表示しても、サイズは0と表示されます。

言語のオリジナル作者も、352,449 フォルダを含むフォルダを作ってもサイズは0だった、と報告しています。ディスク資源を消費することのない、夢のプログラミング言語ですね!

…というのは冗談ですが、ソースコードの短さを競うコードゴルフにおいて、出題者のルール決めに不備が有った場合にはこの Folders が最強のコードゴルフ言語となるでしょう。

via Hacker News