شما هنوز به سیستم وارد نشده اید.

#1 2016-12-07 22:15:24

Arcush
Administrator
ثبت شده: 2015-09-15
ارسال ها: 1,537

رُزِتاکُد، مجموعه ای از کدهای معروف در زبانهای متفاوت

شاید سایت بهتری دوستانم سراغ داشته باشن که لطفا به اشتراک بذارید. ولی اینجا که روزیروز هم جامع تر میشه برای من خیلی مفیده و با مروری بر الگوریتم حل، کدهای معروف رو در سینتکس زبانهای مختلف گردآوری کرده.
http://rosettacode.org/wiki/Category:Pr … _Languages

آفلاین

#2 2020-04-15 19:20:23

Arcush
Administrator
ثبت شده: 2015-09-15
ارسال ها: 1,537

پاسخ: رُزِتاکُد، مجموعه ای از کدهای معروف در زبانهای متفاوت

جان کانوِی به خاطر ویروس کرونا از دنیا رفت. ایشون یک ریاضیدان تراز اول بود که کارهای بزرگی انجام داده است. یکی از معروف ترینشون هم معرفی خوش تعریفِ یک cellular automata هست که در شبیه سازی های تئوری بسیار کاربرد داره. به یاد او دوباره پیاده سازی های بازی زندگی کانوی را در رزتا کد مرور کردم. به ویژه، پیاده سازی C این بازی را خالی از لطف نیست که اجرا کنید.


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
 
#define for_x for (int x = 0; x < w; x++)
#define for_y for (int y = 0; y < h; y++)
#define for_xy for_x for_y
void show(void *u, int w, int h)
{
	int (*univ)[w] = u;
	printf("\033[H");
	for_y {
		for_x printf(univ[y][x] ? "\033[07m  \033[m" : "  ");
		printf("\033[E");
	}
	fflush(stdout);
}
 
void evolve(void *u, int w, int h)
{
	unsigned (*univ)[w] = u;
	unsigned new[h][w];
 
	for_y for_x {
		int n = 0;
		for (int y1 = y - 1; y1 <= y + 1; y1++)
			for (int x1 = x - 1; x1 <= x + 1; x1++)
				if (univ[(y1 + h) % h][(x1 + w) % w])
					n++;
 
		if (univ[y][x]) n--;
		new[y][x] = (n == 3 || (n == 2 && univ[y][x]));
	}
	for_y for_x univ[y][x] = new[y][x];
}
 
void game(int w, int h)
{
	unsigned univ[h][w];
	for_xy univ[y][x] = rand() < RAND_MAX / 10 ? 1 : 0;
	while (1) {
		show(univ, w, h);
		evolve(univ, w, h);
		usleep(200000);
	}
}
 
int main(int c, char **v)
{
	int w = 0, h = 0;
	if (c > 1) w = atoi(v[1]);
	if (c > 2) h = atoi(v[2]);
	if (w <= 0) w = 30;
	if (h <= 0) h = 30;
	game(w, h);
}

آفلاین

#3 2020-04-27 11:43:01

هومان
عضو
ثبت شده: 2019-08-23
ارسال ها: 20

پاسخ: رُزِتاکُد، مجموعه ای از کدهای معروف در زبانهای متفاوت

جادی هم درست کردش اینو smile

آفلاین

پانوشت انجمن

پشتیبانی توسط تیم آرچ لینوکس ایران و نیرو گرفته با FluxBB