首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >不同语言的因子算法怎么实现?

不同语言的因子算法怎么实现?
EN

Stack Overflow用户
提问于 2018-05-02 10:35:21
回答 2查看 0关注 0票数 0

我想看看你能想出的所有不同的方法,一个阶乘子程序或程序。

思路:

  • Procedural
  • Functional
  • Object Oriented
  • One liners
  • Obfuscated
  • Oddball
  • Bad Code
  • Polyglot

基本上我想看一个例子,写一个算法的不同方式,以及他们在不同语言中的样子。

EN

回答 2

Stack Overflow用户

发布于 2018-05-02 18:57:26

Polyglot:5种语言,全部使用bignums

所以,我写了一篇以我常用的三种语言写作的多语种语言,以及我对这个问题的另一个答案,以及我今天刚刚学到的一个。它是一个独立程序,它读取包含非负整数的单个行并打印包含其阶乘的单个行。Bignum用于所有语言,因此最大可计算因子仅取决于计算机的资源。

  • Perl:使用内置的bignum包。运行perl FILENAME
  • Haskell:使用内置的bignums。运行runhugs FILENAME或最喜爱的编译器的等效。
  • C ++:需要GMP支持bignum。用g ++进行编译,g++ -lgmpxx -lgmp -x c++ FILENAME用来链接正确的库。编译后,运行./a.out。或者用你最喜欢的编译器的等价物。
  • brainf * ck:使用Muller的经典发行版,使用bf < FILENAME > EXECUTABLE。使输出可执行并运行它。或者使用你最喜欢的分配。
  • 空白:使用内置的bignum支持。运行wspace FILENAME

添加Whitespace作为第五语言。顺便说一句,你换行的代码<code>标签; 它打破了空白。此外,代码在固定宽度中看起来更好看。

代码语言:javascript
复制
char //# b=0+0{- |0*/; #>>>>,----------[>>>>,--------
#define	a/*#--]>>>>++<<<<<<<<[>++++++[<------>-]<-<<<
#Perl	><><><>	 <> <> <<]>>>>[[>>+<<-]>>[<<+>+>-]<->
#C++	--><><>	<><><><	> < > <	+<[>>>>+<<<-<[-]]>[-]
#Haskell >>]>[-<<<<<[<<<<]>>>>[[>>+<<-]>>[<<+>+>-]>>]
#Whitespace	>>>>[-[>+<-]+>>>>]<<<<[<<<<]<<<<[<<<<
#brainf*ck > < ]>>>>>[>>>[>>>>]>>>>[>>>>]<<<<[[>>>>*/
exp; ;//;#+<<<<-]<<<<]>>>>+<<<<<<<[<<<<][.POLYGLOT^5.
#include <gmpxx.h>//]>>>>-[>>>[>>>>]>>>>[>>>>]<<<<[>>
#define	eval int	main()//>+<<<-]>>>[<<<+>>+>->
#include <iostream>//<]<-[>>+<<[-]]<<[<<<<]>>>>[>[>>>
#define	print std::cout	<< // >	<+<-]>[<<+>+>-]<<[>>>
#define	z std::cin>>//<< +<<<-]>>>[<<<+>>+>-]<->+++++
#define c/*++++[-<[-[>>>>+<<<<-]]>>>>[<<<<+>>>>-]<<*/
#define	abs int $n //><	<]<[>>+<<<<[-]>>[<<+>>-]]>>]<
#define	uc mpz_class fact(int	$n){/*<<<[<<<<]<<<[<<
use bignum;sub#<<]>>>>-]>>>>]>>>[>[-]>>>]<<<<[>>+<<-]
z{$_[0+0]=readline(*STDIN);}sub fact{my($n)=shift;#>>
#[<<+>+>-]<->+<[>-<[-]]>[-<<-<<<<[>>+<<-]>>[<<+>+>+*/
uc;if($n==0){return 1;}return $n*fact($n-1);	}//;#
eval{abs;z($n);print fact($n);print("\n")/*2;};#-]<->
'+<[>-<[-]]>]<<[<<<<]<<<<-[>>+<<-]>>[<<+>+>-]+<[>-+++
-}--	<[-]]>[-<<++++++++++<<<<-[>>+<<-]>>[<<+>+>-++
fact 0	= 1 -- ><><><><	> <><><	]+<[>-<[-]]>]<<[<<+ +
fact	n=n*fact(n-1){-<<]>>>>[[>>+<<-]>>[<<+>+++>+-}
main=do{n<-readLn;print(fact n)}-- +>-]<->+<[>>>>+<<+
{-x<-<[-]]>[-]>>]>]>>>[>>>>]<<<<[>+++++++[<+++++++>-]
<--.<<<<]+written+by+++A+Rex+++2009+.';#+++x-}--x*/;}
票数 0
EN

Stack Overflow用户

发布于 2018-05-02 19:52:45

代码语言:javascript
复制
HAI
CAN HAS STDIO?
I HAS A VAR
I HAS A INT
I HAS A CHEEZBURGER
I HAS A FACTORIALNUM
IM IN YR LOOP
    UP VAR!!1
    TIEMZD INT!![CHEEZBURGER]
    UP FACTORIALNUM!!1
    IZ VAR BIGGER THAN FACTORIALNUM? GTFO
IM OUTTA YR LOOP
U SEEZ INT
KTHXBYE    
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档