سكربت لحل الغاز اكمال المعادلة بالمعاملات
بسم الله الرحمن الرحيم
قام مشرف منتدى البرمجة في مجتمع لينكس بطرح مسألة جميلة جدا ، اغرت فضولي لمحاولة ايجاد حل لها . هي مسألة دائما نمر عليها في الالغاز و كتب الذكاء و لكن لم يسبق لي ان فكرت في جعل العملية الية فالشكر موصول الى مشرفنا العزيز على هذه اللفتة الرائعة.
نص المسألة :
" نعود للألغاز مجددا و مع لغز آخر :
يقول اللغز لدينا سلسة مكونة من خمسة أعداد كما يلي :
اما عن الحل فكان هذا الكود بلغة البرمجة Perl:
و الجواب :
دمتم في الرضا ،
قام مشرف منتدى البرمجة في مجتمع لينكس بطرح مسألة جميلة جدا ، اغرت فضولي لمحاولة ايجاد حل لها . هي مسألة دائما نمر عليها في الالغاز و كتب الذكاء و لكن لم يسبق لي ان فكرت في جعل العملية الية فالشكر موصول الى مشرفنا العزيز على هذه اللفتة الرائعة.
نص المسألة :
" نعود للألغاز مجددا و مع لغز آخر :
يقول اللغز لدينا سلسة مكونة من خمسة أعداد كما يلي :
9,-4,8,6,10
و لدينا المعاملات الأساسية الأربعة + – * / و المطلوب هو برمجة سكريبت بلغة PHP يقوم بحل هذه المعضلة :
9 ? -4 ? 8 ? 6 ? 10 = 7
طبعا في مكان ? نضع المعاملات و لا يجوز تكرار أي معامل , كما أن توزيع الأرقام الحالي يمكن تغييره
ننتظركم" اما عن الحل فكان هذا الكود بلغة البرمجة Perl:
use strict; use Algorithm::Combinatorics qw(variations); use feature ':5.10'; my @operators = qw(+ - * /); my @numbers = qw(9 -4 8 6 10); my $total = 7; #required result my $iter = variations(\@operators, 4); #get combinations for operators without rep. and loop my $iter2 = variations(\@numbers, 5); #get combinations for numbers without rep. and loop while (my $p = $iter->next){ while (my $p2 = $iter2->next){ #escaping precedence my $eval = eval ("$p2->[0] $p->[0] $p2->[1]"); $eval = eval ("$eval $p->[1] $p2->[2]"); $eval = eval ("$eval $p->[2] $p2->[3]"); $eval = eval ("$eval $p->[3] $p2->[4]"); if ($eval == $total){ say "$p2->[0] ($p->[0]) $p2->[1] ($p->[1]) $p2->[2] ($p->[2]) $p2->[3] ($p->[3]) $p2->[4] = 7"; } } $iter2 = variations(\@numbers, 5); #Resets the iterator }
9 (+) -4 (*) 10 (-) 8 (/) 6 = 7
-4 (+) 9 (*) 10 (-) 8 (/) 6 = 7
6 (-) 10 (*) 9 (+) 8 (/) -4 = 7
10 (-) 6 (*) -4 (/) 8 (+) 9 = 7
10 (-) 6 (/) 8 (*) -4 (+) 9 = 7
10 (/) 8 (+) 6 (-) 9 (*) -4 = 7
10 (/) 8 (-) 9 (+) 6 (*) -4 = 7
-4 (+) 9 (*) 10 (-) 8 (/) 6 = 7
6 (-) 10 (*) 9 (+) 8 (/) -4 = 7
10 (-) 6 (*) -4 (/) 8 (+) 9 = 7
10 (-) 6 (/) 8 (*) -4 (+) 9 = 7
10 (/) 8 (+) 6 (-) 9 (*) -4 = 7
10 (/) 8 (-) 9 (+) 6 (*) -4 = 7
دمتم في الرضا ،