انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: 404 در 09 فروردین 1387، 10:07 ب‌ظ

عنوان: معما از نوع c/c++
ارسال شده توسط: 404 در 09 فروردین 1387، 10:07 ب‌ظ
سلام! نمی دونم کسی اینجا ازین چیزا خوشش می آد یا نه. ولی خوب شاید یکی باشه که خوشش بیاد!(مثلا من :P) این کد به شما داده شده:
#include <cstdio>
/* the code was here */
int main() {
  printf("1\n");
  return 0;
}
و به شما می گن دقیقا در همون جا که گفته شده، فقط یه خط پاک شده. حالا اون خط رو طوری پر کنید که با کمترین تعداد کرکتر، این برنامه بهتون این خروجی رو بده:
0
1

راههایی با ۳۴و۲۸و۲۷و۲۰و۱۶ کرکتر وجود دارن. فعلا اونا رو نمی گم(یه خوده فکر کنین خب :P) اگه کسی خوشش آمد می تونه بگه تا بگم.

اگه خواستین می تونین روی ورژن بعدی معما هم فکر کنین: طوری که خروجی این بشه:

نقل‌قول
1
2


پ.ن: اگه این حرفا خیلی مربوط به اینجا نمی شه، صریحا بگین خیلی خویه :دی
عنوان: پاسخ به: معما از نوع c/c++
ارسال شده توسط: سعید رسولی در 09 فروردین 1387، 11:48 ب‌ظ
خودمو کشتم با 35 کاراکتر حلش کردم. بجای اون خط:
#define printf printf("0\n");printfیعنی واقعا با 16 کاراکتر هم میشه؟!!
باید بگم که من C کار نیستم (فقط بصورت مقدماتی کار کردم)، ولی از معما خوشم میاد. بازم داشتی بگو.
امیدوارم ناظران مخالفت نکنن. بالاخره به برنامه‌نویسی ربط داره دیگه!
عنوان: پاسخ به: معما از نوع c/c++
ارسال شده توسط: sahama در 10 فروردین 1387، 12:11 ق‌ظ
 يه سوال آيا جواب اين نيست؟
printf("2;")
عنوان: پاسخ به: معما از نوع c/c++
ارسال شده توسط: sahama در 10 فروردین 1387، 12:15 ق‌ظ
چون فكر نمي كنم برنامه خطاي كامپايلري داشته باشه و خود به خود به خط بعد هم مي ره پس كافيه كه 2 چاپ بشه
عنوان: پاسخ به: معما از نوع c/c++
ارسال شده توسط: 404 در 10 فروردین 1387، 12:18 ق‌ظ
چون فكر نمي كنم برنامه خطاي كامپايلري داشته باشه و خود به خود به خط بعد هم مي ره پس كافيه كه 2 چاپ بشه
نه، نمی شه یه تابع رو همین طوری خارج از main برنامه صدا زد.
عنوان: پاسخ به: معما از نوع c/c++
ارسال شده توسط: 404 در 10 فروردین 1387، 12:20 ق‌ظ
حال می ده که دونه دونه آدم تعداد کرکتر اشو کم کنه  ;D تا به ۱۶ برسه . فعلا که راه کمتری یافت نشده. ولی همین define ه شما یکی از ایده هاش بود .این راهاشو attach کردم. هر کی خواست ب/نخونه :دی
پ.ن: ولی من که با همین معما کلی چیز یاد گرفتم
عنوان: پاسخ به: معما از نوع c/c++
ارسال شده توسط: علیرضا طالقانی در 10 فروردین 1387، 12:25 ق‌ظ
#include <cstdio>
/* the code was here */
int main() {
  printf("0\n1\n");
  return 0;
}

چقدر ممکنه!‌ جواب اش این باشه؟
عنوان: پاسخ به: معما از نوع c/c++
ارسال شده توسط: 404 در 10 فروردین 1387، 12:27 ق‌ظ
به همون احتمالی که من رئیس جمهور آمریکا باشم  ;) :P
عنوان: پاسخ به: معما از نوع c/c++
ارسال شده توسط: علیرضا طالقانی در 10 فروردین 1387، 12:33 ق‌ظ
چرا؟ چون خروجی رو که حتما خواهد داد!‌فقط بحث اینه ک یک خط اضافه نشده! و فقط ادیت شده!  ](*,)
عنوان: پاسخ به: معما از نوع c/c++
ارسال شده توسط: 404 در 10 فروردین 1387، 12:41 ق‌ظ
چرا؟ چون خروجی رو که حتما خواهد داد!‌فقط بحث اینه ک یک خط اضافه نشده! و فقط ادیت شده!  ](*,)
حالا که کلا قضه شوخیه  :D، ولی خب بالاخره صورت مسئله رو که نباید پاک کرد  ;) حتی این راهم غیر قابل قبوله به نظرم:
#include"a"و بعد توی فایل a  می شه یه کد n character ای هم گذاشت ولی بگیم توی خود این کد ۱۱ character  اضافه شده!!
عنوان: پاسخ به: معما از نوع c/c++
ارسال شده توسط: علیرضا طالقانی در 10 فروردین 1387، 12:44 ق‌ظ
این چطوره؟
#include <cstdio>
/* the code was here */
int main() {
    putc (0 , stdout);
  printf("1\n");
  return 0;
}
stdout هم اگه اشتباه ننوشته باشم ! خروجی استانداره هستش
عنوان: پاسخ به: معما از نوع c/c++
ارسال شده توسط: 404 در 10 فروردین 1387، 12:50 ق‌ظ
این چطوره؟
#include <cstdio>
/* the code was here */
int main() {
    putc (0 , stdout);
  printf("1\n");
  return 0;
}
stdout هم اگه اشتباه ننوشته باشم ! خروجی استانداره هستش


نقل‌قول
و به شما می گن دقیقا در همون جا که گفته شده، فقط یه خط پاک شده. حالا اون خط رو طوری پر کنید که با کمترین تعداد کرکتر، این برنامه بهتون این خروجی رو بده:
منظورم این بود دقیقا توی همون خط که گفته شده /* the code was here */ یه خط قرار بدین. نه هر جای دلخواه
عنوان: پاسخ به: معما از نوع c/c++
ارسال شده توسط: علیرضا طالقانی در 10 فروردین 1387، 01:01 ق‌ظ
 ](*,)
شاید اشتباه کرده خب!  \\:D/ ;)
آره الان دیدم!  ;)
عنوان: پاسخ به: معما از نوع c/c++
ارسال شده توسط: 404 در 10 فروردین 1387، 01:04 ق‌ظ
 :) حالا خدا رو خوش نمی آد! این قدر  ](*,) نکنین واسه یه معما  ;)
عنوان: پاسخ به: معما از نوع c/c++
ارسال شده توسط: سعید رسولی در 10 فروردین 1387، 02:42 ق‌ظ
آقا دستت درد نکنه، خیلی جالب بود! :)
عنوان: پاسخ به: معما از نوع c/c++
ارسال شده توسط: 404 در 10 فروردین 1387، 08:52 ق‌ظ
آقا دستت درد نکنه، خیلی جالب بود! :)
خواهش می کنم!
این به نظرم جالب بود که بگم:
تو کشورای دیگه (هنوزقاره  آسیا که نیست اینجا) یه سری ملتی هستن که سر کثیف کد زدنم مسابقه می ذارن :o می تونین این سایت رو ببینین:
The International Obfuscated C Code Contest (http://www.ioccc.org/)
با مزه است :P
عنوان: پاسخ به: معما از نوع c/c++
ارسال شده توسط: yunas در 10 فروردین 1387، 01:23 ب‌ظ
معمای جالبیه دستت درد نکنه من عاشق این جور سرگرمی ها هستم
اینم یه راه حل کوتاه تر
#define printf puts("0");puts
عنوان: پاسخ به: معما از نوع c/c++
ارسال شده توسط: Behnam Golds در 10 فروردین 1387، 06:17 ب‌ظ
این  مورد  آخری  که گفتی  دلیلشو اینجوری  نوشته :


To write the most Obscure/Obfuscated C program under the rules below.
To show the importance of programming style, in an ironic way.
To stress C compilers with unusual code.
To illustrate some of the subtleties of the C language.
To provide a safe forum for poor C code. :-)
عنوان: پاسخ به: معما از نوع c/c++
ارسال شده توسط: sahama در 10 فروردین 1387، 08:24 ب‌ظ
يه سوال حتما بايد c باشه يا c++ هم ميشه
در اين صورت :
class a{a(){printf(0);}}c;
عنوان: پاسخ به: معما از نوع c/c++
ارسال شده توسط: yunas در 10 فروردین 1387، 08:58 ب‌ظ
این کد سی ++ که شما نوشتید که تا فراخوانی نشه اجرا نمیشه...
هدف اینه که با اضافه کردن یه خط کد یه صفر بصورت خودکار قبل از یک چاپ بشه...
عنوان: پاسخ به: معما از نوع c/c++
ارسال شده توسط: 404 در 10 فروردین 1387، 09:05 ب‌ظ
يه سوال حتما بايد c باشه يا c++ هم ميشه
در اين صورت :
class a{a(){printf(0);}}c;

فقط مسئله اینه که class default private هست. برای همین باید struct باشه که این اررورش یر طرف شه. وگر نه این راه هم درسته. توی همون چیزی که upload کرده بودم، این راه حل هست. توی صفحه‌ی قبلی می تونین ببینین یه سری راهشو.
این کد سی ++ که شما نوشتید که تا فراخوانی نشه اجرا نمیشه...
هدف اینه که با اضافه کردن یه خط کد یه صفر بصورت خودکار قبل از یک چاپ بشه...
چرا.اگه یه متغییر از اون type داشته باشیم که قبل اون خط اومده باشه، constructor ش صدا زده می شه و اون خط چاپ می شه. یعنی :

struct a{a(){puts("0");}};کاری که ما می خوایم رو نمی کنه ولی:
struct a{a(){puts("0");}}b;می کنه.