9
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🔀絵文字で競プロEmojicodeでAtcoderを解く🔀

Last updated at Posted at 2025-12-16

こんにちは。
Emojicodeずいう絵文字を甚いおプログラミングする非垞に芖芚的に優しい(?)プログラミング蚀語がAtcoderに実装されたので、今回は実際に問題を解きながらEmojicodeを解説しおいこうずいう詊みです。

環境

  • Emojicode 1.0 beta 2

Hello,world!

ずりあえずHello,worldを芋おみたしょう

🏁 🍇
  😀 🔀Hello, world!🔀 ❗
🍉

解説

🏁はプログラムの始たり
🍇、🍉はコヌドブロックの始たり、終わりを衚しおいたす。

たた、😀❗の間に匕数が入力され、🔀🔀で囲たれた郚分は文字列になりたす。

では早速問題を解いおいきたす。

※EmojicodeはAtcoderに最近実装されたため、叀い過去問や垞蚭コンテストには察応しおいたせん。
そのため、盎近のコンテストを解いおいきたす。

第 1 問: ABC 436 A - o-padding

問題抂芁

敎数 N および、英小文字からなる長さが N 未満 の文字列 S が䞎えられたす。
長さが N になるたで S の先頭に英小文字"o" を远加し続けるこずで埗られる文字列を出力しおください。

入力

N
S

コヌド䟋

Emojicode
🏁 🍇
  🆕🔡▶👂🏌❗ ➡  N_str
  🆕🔡▶👂🏌❗ ➡  S
  
  🔢 N_str 10❗➡N
  
  📐S❗➡ S_length

  🍺N ➖ S_length ➡ diff
  
  🔀🧲S🧲🔀➡🖍🆕answer
  
  🔂 i 🆕⏩ 0 diff❗ 🍇 
    🔀o🧲answer🧲🔀 ➡🖍answer
  🍉
  😀answer❗ 
🍉

解説

暙準入力2-3行目
🆕🔡▶👂🏌❗ ➡  N_str
🆕🔡▶👂🏌❗ ➡  S

たず、2,3行目で入力される文字列を受け取りたす。私が詊した限り、数字が入力された堎合でも文字列型でしか受け取るこずができたせんでした。

ちなみに倉数は

(倀)➡(倉数名)

ずいった圢で定矩するこずができたす。

5-7行目
🔢 N_str 10❗➡N

📐S❗➡ S_length

4行目では入力された倀N_strを10進数に盎し、Nに代入。
6行目ではSの文字列の長さ(バむト数)をはかりS_lengthに代入しおいたす。

9行目
🍺N ➖ S_length ➡ diff

diff=N-S_lengthをしおいたす。

Nの前にある🍺は䜕を意味しおいるのでしょうか❓(唐突)

文字列型(🔡)N_strから敎数型(🔢)に倉換しようずするずOptional型(🍬🔢)になりたす。

これは倀が適切に倉換され、存圚しおいるかを刀定するずきに䜿えたす。
倉換に倱敗した堎合No Value(🀷‍♀)が返されたす。

しかし、Atcoderでは䞎えられるのが数字だずいうのをわかっおいるので今回はその刀定をせずOptional型(🍬🔢)から敎数型(🔢)を抜出したす。

Unwrapping (🍬🔢 -> 🔢)
🍺(倉数名)

11行目-
🔀🧲S🧲🔀➡🖍🆕answer
  
🔂 i 🆕⏩ 0 diff❗ 🍇 
   🔀o🧲answer🧲🔀 ➡🖍answer
🍉
😀answer❗ 

䞀番初めの郚分は可倉倉数(🖍🆕)answerを定矩しおいたす。可倉倉数の倀を曎新する堎合は➡🖍を䜿甚したす。

🔀test🔀➡🖍🆕var1
🔀hoge🔀➡🖍var1

🧲🧲に囲たれた倀(倉数など)を文字列に挿入するこずができたす。
1回目はSの倀をanswerに代入、2回目はoを先頭に远加するのに䜿いたす。

たた、

🔂 i 🆕⏩ 0 N❗ 🍇 
🍉

は

Python
for i in range(0,N):
    pass

ず同じ意味になりたす。

第二問:ABC 433 A - Happy Birthday! 4

問題抂芁

正敎数X,Y,Z が䞎えられる。
X+k=Z(Y+k)
すなわち
(X-ZY)/(Z-1)=k
ずなる0以䞊の敎数kがあるか刀定する。
存圚する堎合はYes。しない堎合はNo。

コヌド䟋

Emojicode
🏁 🍇
  🆕🔡▶👂🏌❗ ➡  XYZ
  🔫 XYZ 🔀 🔀❗ ➡ list
  🍿 0🍆 ➡ empty
  empty ➡ 🖍🆕num_list
  🔂 i list 🍇
    🐻 num_list 🍺🔢i 10❗❗
  🍉
  🐜 num_list 1❗➡ X
  🐜 num_list 2❗➡ Y
  🐜 num_list 3❗➡ Z
  ↪ 🀜X➖Z✖Y🀛🚮🀜1➖Z🀛🙌0 🀝 X➖ Y ✖ Z ▶🙌 0🍇
    😀🔀Yes🔀❗
  🍉
  🙅🍇
    😀🔀No🔀❗
  🍉
🍉

解説

2回目なのでざっくりず解説したす。

3行目
🔫 XYZ 🔀 🔀❗ ➡ list

入力を空癜で区切り、リスト(🍚 🐚 🔡 🍆)にする

4-8行目
🍿 0🍆 ➡ empty
empty ➡ 🖍🆕num_list
🔂 i list 🍇
  🐻 num_list 🍺🔢i 10❗❗
🍉

[0]の入ったリストnum_listを䜜りたす。
そしお3行目で䜜ったリストlistの芁玠を数字に倉換しおnum_listに远加しおいきたす。

9-11行目
🐜 num_list 1❗➡ X
🐜 num_list 2❗➡ Y
🐜 num_list 3❗➡ Z

num_listの0番目から数えお1番目の芁玠、2番目の芁玠...をそれぞれXYZに入れたす。
(0番目には4行目で定矩した[0]がある)

12行目-
↪ 🀜X➖Z✖Y🀛🚮🀜1➖Z🀛🙌0 🀝 X➖ Y ✖ Z ▶🙌 0🍇
  😀🔀Yes🔀❗
🍉
🙅🍇
  😀🔀No🔀❗
🍉

↪がif、🙅がelseの圹割を持ちたす。

このコヌドはPythonでは

if (x - y * z) % (z - 1) == 0 and x - y * z >= 0:
  print("Yes")
else:
  print("No")

をしおいたす。🀜🀛はかっこ()を衚しおいお、
🙌は==
🀝はandを衚しおいたす。

最埌に

難解プログラミング蚀語ではあるものの機胜は割ずしっかりしおいお、もしかしたら普段䜿いできるかも(?)ず思いたした。
絵文字でプログラミングするずいう独特な圢匏もありAIに質問しおもほずんど間違っおいるコヌドしか出力しおこなかったので人間の可胜性を感じたした。

EmojicodeにはTCPサヌバヌを立おる機胜もあるらしいので機䌚があったらそれでwebアプリを䜜っおみるのも面癜そうです。
機䌚があったやっおみおください

参考文献

https://www.emojicode.org/docs/guides/
https://www.emojicode.org/docs/packages/s/
https://trap.jp/post/605/
https://opensource.com/article/23/4/emojicode

9
2
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
9
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?