14

بلغتك البرمجية المفضلة اكتب البرامج التالية

  1. برنامج عند تنفيذه يقوم بطباعة محتواه (السورس كود)

  2. برنامج يقوم بإنشاء نسخ من نفسه (procceses) بصورة متكررة. كن حذراً عند تشغيل البرنامج لأن نظام التشغيل سيتوقف عن الإستجابة وستحتاج لإعادة تشغيله (i warned you :P).

  3. برنامج يقوم بإستقبال إثنان من أسماء الملفات عبر command line arguments يقوم بقراءة أسطر الملف الأول ويخلطها عشوائياً (shuffling) ثم يكتبها في الملف الثاني.


الهدف من هذا الموضوع إني أريد معرفة كيف تعمل بعض الأشياء في لغات البرمجة المختلفة (بالإضافة للتسلية ايضاً)

ملحوظة لمبرمجي جافاسكربت: استخدم nodejs

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

10

البرامج باستخدام لغة php

البرنامج الأول:

<?php
    echo htmlspecialchars(file_get_contents( __FILE__ ));
?>

البرنامج الثاني:

<?php
    class myClass
    {
        public function __construct()
        {
            echo "Hello";
        }
    }
    while(true)
    {
        new myClass();
    }
?>

البرنامج الثالث:

<?php
    $stdin = explode(' ', fgets(STDIN));
    $content = explode("\n", file_get_contents($stdin[0]));
    shuffle($content);
    file_put_contents($stdin[1], implode("\n", $content));
?>

البرامج بإستخدام بايثون

البرنامج الأول:

with open(__file__, "r") as f:
    print(f.read())

البرنامج الثاني (يمكن تنفيذه بطرق أخرى ولكن هذه أسهل طريقة):

import os

while True:
    os.fork()

البرنامج الثالث:

from sys import argv
from random import shuffle

input_file = argv[1]
output_file = argv[2]

with open(input_file, "r") as f:
    lines = [line for line in f]

shuffle(lines)

with open(output_file, "w") as f:
    for line in lines:
        f.write(line)

البرمجة باستخدام لغة الجافاسكربت

البرنامج الأول

console.log(
    require('fs').readFileSync(process.argv[1],'utf8')
    );

البرنامج الثاني

var fs = require('fs');
eval(fs.readFileSync(process.argv[1],'utf-8'));

البرنامج الثالث

#!/usr/bin/env node
// test command './program3.js program1.js helloWorld'
var fs = require("fs"),
    _ = require('underscore'),
    file = fs.readFileSync(process.argv[2],'utf-8'),
    writeto = process.argv[3];

fs.writeFileSync(writeto,_.shuffle(file.split('\n')).join('\n'),{encoding: 'utf-8'});

اللغة المستعملة: Bash

 البرنامج الأول:

#!/usr/bin/bash
cat $0

البرنامج الثاني:

#!/usr/bin/bash
echo `date` >> log # optional step
bash $0 &

البرنامج الثالث:

#!/usr/bin/bash
# verify number of args is exactly 2
[[ $# -eq 2 ]] || exit 1 # optional step
i=0
# read the input file (first arg) line by line
# and put them in an array
while IFS= read -r content[$i]; do ((i++)); done < $1
# shuffle the content of the array and
# redirect it to the out file (second arg)
shuff -e ${content[@]} > $2

بالنسبة للبرنامج الثاني إبحث عن

:(){ :|:& };:

A proper fork bomb ;)

ههههه شكرا :) كان علي أن اجعلها في while loop على الاقل :)