跳至正文
LNN的博客!

brainf和Befunge 99Bottles 和 FizzBuzz

99bottles.b

12月22日

99 bottles of beer
 
获得初始瓶数99
>++++++++++[-<++++++++++>]<-
主循环
[
 
  >[输出当前瓶数(参考 https://esolangs.org/wiki/Brainfuck_algorithms )]
  +<[>->++++++++++<<[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]>>[-]>>>++++++++++<[->-[>+>>]>[+[-<+>]>+>>]<<<<<]>[-]>>[>++++++[-<++++++++>]<.<<+>+>[-]]<[<[->-<]++++++[->++++++++<]>.[-]]<<++++++[-<++++++++>]<.[-]<<[-<+>]]
 
  输出“ bottle”
  >>++++[-<++++++++>]<.[-] 输出空格并清理
  <++++++++++[->++++++++++>+++++++++++>++++++++++++<<<] 获得100、110、120
  >--.>+.>----..<---.<+++. 上下微调输出“bottle”
  >>[[-]<] 清理
 
  如果瓶数不是1则输出“s”
  <- 减1
  [->+>+<<] 复制两份
  >[-<+>] 其中一份挪回去
  >[[-] if块
    >+++++++++[-<+++++++++++++>]<--.[-] 输出“s”并清理
  ]<<+ 还原
 
  >[输出“ of beer on the wall,\n”]
  ++++[->++++++++<] 获得空格
  ++++++++++[->>++++++++++>+++++++++++>++++++++++++<<<<] 获得100、110、120
  >.>>+.<++.<.>----.+++..>+++.<<.>>---.-.<<.>>>----.<<+++.---.<.>>>+++.<<----.>--..
  >[[-]<] 清理
  >+++++[->+++++++++<]>-.[-] 输出逗号并清理
  ++++++++++.[-]输出换行符并清理
 
  输出当前瓶数
  <<+<[>->++++++++++<<[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]>>[-]>>>++++++++++<[->-[>+>>]>[+[-<+>]>+>>]<<<<<]>[-]>>[>++++++[-<++++++++>]<.<<+>+>[-]]<[<[->-<]++++++[->++++++++<]>.[-]]<<++++++[-<++++++++>]<.[-]<<[-<+>]]
 
  输出“ bottle”
  >>++++[-<++++++++>]<.[-]
  <++++++++++[->++++++++++>+++++++++++>++++++++++++<<<]
  >--.>+.>----..<---.<+++.
  >>[[-]<]
 
  如果瓶数不是1则输出“s”
  <-
  [->+>+<<]
  >[-<+>]
  >[[-]
    >+++++++++[-<+++++++++++++>]<--.[-]
  ]<<+
 
  >[输出“ of beer.\nTake one down, pass it around,\n”]
  ++++++++++[->+++>+++++>++++++++++>+++++++++++>++++++++++++<<<<<] 获得30、50、100、110、120
  >++.>>>+.<++.<<.>>----.+++..>+++.<<----.<<++++++++++.
  >>>-----------------.+++++++++++++.>-------.<++++.<<.>>>++++.-.<.<<.>>-.>+.>-.<-.<<--.<.
  >>>++.<---.>+++..<<<.>>++++++++.>+.<<<.>>--------.>--.---.>--.<-.<+++.<.<<.
  [-]>[[-]>] 清理
 
  瓶数减1
  <<<<<<<-
 
  如果瓶数为0输出“No ”,否则输出瓶数
  >+<[ if块
    [->>>+<<<] 瓶数搬过来,防止输出数字干扰 if else 使用的临时单元格
 >>>>+<[>->++++++++++<<[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]>>[-]>>>++++++++++<[->-[>+>>]>[+[-<+>]>+>>]<<<<<]>[-]>>[>++++++[-<++++++++>]<.<<+>+>[-]]<[<[->-<]++++++[->++++++++<]>.[-]]<<++++++[-<++++++++>]<.[-]<<[-<+>]]
    <[-<<<+>>>] 瓶数搬回去
  <<-<[->>+<<]]>>[-<<+>>]<[ else块
    >>>++++++++++[-<++++++++>>+++++++++++<] 获得80和110
    <--.[-] 输出“N”并清理
    >>+.[-] 输出“o”并清理
  <<<<-] 还原
 
  输出“ bottle”
  >++++[-<++++++++>]<.[-]
  ++++++++++[->++++++++++>+++++++++++>++++++++++++<<<]
  >--.>+.>----..<---.<+++.
  >>[[-]<]
 
  如果瓶数不是1则输出“s”
  <-
  [->+>+<<]
  >[-<+>]
  >[[-]
    >+++++++++[-<+++++++++++++>]
    <--.[-]
  ]<<+
 
  >[输出“ of beer on the wall.\n\n”]
  ++++[->++++++++<] 获得空格
  ++++++++++[->>++++++++++>+++++++++++>++++++++++++<<<<] 获得100、110、120
  >.>>+.<++.<.>----.+++..>+++.<<.>>---.-.<<.>>>----.<<+++.---.<.>>>+++.<<----.>--..
  >[[-]<] 清理
  >+++++[->+++++++++<]>+.[-] 输出句点并清理
  ++++++++++..[-] 输出空格并清理
 
<<<] 继续主循环
 
强行手动输出最后一段
++++++++++[->+>+++>+++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++<<<<<<<<] 获得10、30、50、80、90、100、110、120
>>>>--.>>>+.<<<<<++.>>>>--.>.>----..<---.<+++.>>-.<<<<<<.>>>>>+++.<+.<<<<.>>>>----.+++..>+++.<<<<<.
>>>>>---.-.<<<<<.>>>>>>+.<<+++.---.<<<<.>>>>>>+++.<<----.>--..<<<<------.<<.
>>>.>>>+++.<<<<<.>>>>+.>.>---..<---.<+++.>>-.<<<<<<.>>>>>+++.<+.<<<<.>>>>----.+++..>+++.<<<<++.<<.
>>>-------.>>>---.<<<<<.>>>>>>+.<.<<<<<.>>>>>>.<<+++.---.<<<<.>>>>>>-.+.<.+++.<.<<<--.<.
>>>>---.>>+.++++.<<<<<<.>>>>>>------.<---.--.<+++.<<<<.>>>>>.++.+++.<.<<<.<<.
>>+++++++++++++..<.>>>>---.>---.>+..<---.<+++.>>-.<<<<<<.>>>>>+++.<+.<<<<.>>>>----.+++..>+++.<<<<<.
>>>>>---.-.<<<<<.>>>>>>+.<<+++.---.<<<<.>>>>>>+++.<<----.>--..<<<<-----------.<<.

多次用到了这个代码片段:

输出当前格的值。中途使用右手边的9个单元格。
>+<[>->++++++++++<<[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]>>[-]>>>++++++++++<[->-[>+>>]>[+[-<+>]>+>>]<<<<<]>[-]>>[>++++++[-<++++++++>]<.<<+>+>[-]]<[<[->-<]++++++[->++++++++<]>.[-]]<<++++++[-<++++++++>]<.[-]<<[-<+>]]<

99bottles.b93

12月17日

v> >:#v_#v #"" oN"# ,,# <   >"s",>052*",llaw eht no reeb fo ">:#,_$v
9     >:.>"elttob",,,,,,:1-#^_   ^ v   _v#!-1:,,,,,,"bottle"<.:<
5* v\*25\0:$_ #!,#:<" of beer."*250<,"s"<  > #,, #"No ""#   ^#_^#!:<
6+v_",erom emos yub ,erots eht ot oG">:#,_$956+*.88*20pv  Befunge-93
 v>",dnuora ti ssap ,nwod eno ekaT">:#,_$1-:!#v_:.v    <>:#,_$25*:,,
 #   "on the wall."0<   _v#!-1:,,,,,,"bottle"< <  <     ^" of beer "
>^99 bottles of beer^,"s"<      > #,, #"No ""#<^ dgck81lnn.github.io

输出瓶数模块:

{in}>:v_#v #"" oN"# ,,# <   >"s",>{out}
      >:.>"elttob",,,,,,:1-#^_   ^
栈顶 输出
99 99 bottles
2 2 bottles
1 1 bottle
0 No bottles

fizzbuzz.b

12月25日

初始化计数器
>++++++++++[-<++++++++++>]
( N=100 'n=0 )
<[->+
  [->+>+>>>+>>+<<<<<<<]
  ( N '0 n n 0 0 n 0 n )
  >[-<+>]
  >>+
  ( N n 0 n '1 0 n 0 n )
  n模3
  >>>>[
    ->+<[ ->+<[
      ->[-]
    ]]
  <]<[>]
  ( N n 0 n 1 0 n '0 0 {n%3} )
  如果余数为0就输出Fizz
  >+
  >[[-]<->]
  ( N n 0 n 1 0 n 0 {n%3==0?1:0} '0 )
  <[[-]
    <<<<<[-]
    >>>>>>+++++++[-<++++++++++>]<. F
    >+++++[-<+++++++>]<. i
    >++++[-<++++>]<+.. zz
    [-]
  ]
  ( N n 0 {n%3==0?0:n} 1 0 n 0 '0 )
  n模5
  <<[
    ->+<[ ->+<[ ->+<[ ->+<[
      ->[-]
    ]]]]
  <]<[>]
  ( N n 0 {n%3==0?0:n} 1 '0 0 {n%5} )
  如果余数为0就输出Buzz
  >+
  >[[-]<->]
  ( N n 0 {n%3==0?0:n} 1 0 {n%5==0} '0 )
  <[[-]
    <<<[-]
    >>>>++++++[-<+++++++++++>]<. B
    >+++++++[-<+++++++>]<++. u
    +++++.. zz
    [-]
  ]
  ( N n 0 {n%3==0||n%5==0?0:n} 1 0 '0 )
  <<-
  如果模3和模5都不为0就输出数字十进制
  ( N n 0 {n%3==0||n%5==0?0:n} '0 )
  <[
     ->+<[ ->+<[ ->+<[ ->+<[
     ->+<[ ->+<[ ->+<[ ->+<[ ->+<[
       ->[-]>+<
     ]]]]]]]]]
  <]<[>]
  ( N n '0 0 {n%3==0||n%5==0?0:n%10} {n%3==0||n%5==0?0:n/10} )
  >>[>]<[
    >++++++[-<++++++++>]<. 0~9
    [-]
  <]
  ( N n 0 '0 )
  换行
  ++++++++++.[-]
<<<]

fizzbuzz.b93

12月24日

v>:3%:v ,,:,,<
1:v\  _1"ziF"^
>^>5%:v ,,:,,<
>|v\  _1"zuB"^
^@>*!#v_:v>*`!
+55:+1< .<^:,:

其实我最近有些个人的负面情绪需要宣泄,但我明白每个人都有自己的烦恼,是吧?我不会在网络上发出来影响大家的心情,即使是在这个几乎不会有人看到的网站上。朋友,如果你读到这里,我要感谢你的无形的陪伴。谢谢。


评论区

加载基于 GitHub issues 的 utteranc.es 评论区组件……