পার্ল, 32 = 31 + 1 বা 73 = 72 + 1 (ন্যূনতম বন্ধনী)
32 = 31 + 1: অতিরিক্ত অপ্রয়োজনীয় বন্ধনী সহ
সম্পাদনা:
- ঠিক করুন, বন্ধনী এখন গণনা করা হয়
y///
।
- অপ্রয়োজনীয় ভেরিয়েবল
$a
সরানো হয়েছে।
$_="("x y/)//.s|$|")"x y/(//|er
এটি রান-টাইম সুইচ -p
(+1 বাইট) সহ ব্যবহৃত হয় ।
পরীক্ষা ফাইল input.txt
:
This line has no parentheses
alert(Math.max(1, 2
1+1)*2).toString()
function() { alert('Hello, World!'); })(
(foo))(bar
)))(((
((
))
কমান্ড লাইন:
perl -p script.pl <input.txt
অথবা
perl -pe '$_="("x y/)//.s|$|")"x y/(//|er' <input.txt
ফলাফল:
This line has no parentheses
alert(Math.max(1, 2))
(((1+1)*2).toString())
(((function() { alert('Hello, World!'); })()))
(((foo))(bar))
((()))((()))
(())
(())
Ungolfed:
অ্যালগরিদম সহজ, প্রতিটি পাওয়া প্রথম বন্ধনী জন্য খালি অংশ যোগ করুন।
$_ = # $_ is provided as input by switch `-p` and
# it is printed afterwards as output.
# y/X// is used to count the character 'X' in $_
'(' x y/)// # add opening parentheses for each closing parentheses
. s|$|')' x y/(//|er # go right before the end of line and insert
# closing parentheses for each opening parentheses
# in the original string
73 = 72 + 1: যোগ করা হচ্ছে সর্বনিম্ন সংখ্যা বন্ধনী যুক্ত করা
এই স্ক্রিপ্টটি ভারসাম্য আউটপুট পেতে কেবলমাত্র সর্বনিম্ন সংখ্যক বন্ধনী যুক্ত করে।
$a=y/()//cdr;1while$a=~s/\(\)//g;$_=$a=~y/)(/(/dr.$_;s|$|$a=~y/()/)/dr|e
এটি রান-টাইম সুইচ -p
(+1 বাইট) সহ ব্যবহৃত হয় ।
perl -pe "$a=y/()//cdr;1while$a=~s/\(\)//g;$_=$a=~y/)(/(/dr.$_;s|$|$a=~y/()/)/dr|e" <input.txt
ফলাফল:
This line has no parentheses
alert(Math.max(1, 2))
((1+1)*2).toString()
(function() { alert('Hello, World!'); })()
((foo))(bar)
((()))((()))
(())
(())
Ungolfed:
$a = y/()//cdr; # filter parentheses and store in $a
1 while $a =~ s/\(\)//g; # remove matching parentheses
$_ = $a =~ y/)(/(/dr . $_; # add missing opening parentheses at start of string
s|$|$a=~y/()/)/dr|e # insert missing closing parentheses at end of string
81 = 80 + 1: যোগ করা হচ্ছে সর্বনিম্ন সংখ্যা বন্ধনী যুক্ত করা
ভারসাম্য আউটপুট জন্য ন্যূনতম সংখ্যক বন্ধনী যুক্ত করার জন্য এটি একটি পুরানো পদ্ধতি।
my($l,$r);s/[()]/($&eq")"&&($r&&$r--||++$l))||$r++/ger;$_="("x$l.$_;s/$/")"x$r/e
এটি পার্ল 5.14 (অ-ধ্বংসাত্মক বিকল্প প্রতিস্থাপনকারীর কারণে) এবং রান-টাইম স্যুইচ -p
(+1 বাইট) ব্যবহার করে।
perl -p script.pl <input.txt
ফলাফল:
This line has no parentheses
alert(Math.max(1, 2))
((1+1)*2).toString()
(function() { alert('Hello, World!'); })()
((foo))(bar)
((()))((()))
(())
(())
Ungolfed:
# The while loop is added by option "-p".
LINE:
while (<>) {
# $_ contains the current line
my ($l, $r); # initializes $l and $r (to undef/kind of indirect 0)
# Modifiers for the following substitution of $_:
# /g: process all parentheses
# /e: evaluate code
# /r: does not change the original input string $_ (Perl 5.14)
s/[()]/
# $& contains the matched parentheses
# $r is a balance level counter; at the end $r contains
# the number of needed closing parentheses
# $l is the number of needed opening parentheses;
# if $r would go negative, then an opening parentheses
# is missing and $l is increases and $r remains zero.
(
$& eq ")" && # case ")"
($r && $r-- # close a parentheses group and update balance counter
|| ++$l) # or update $l if an opening parentheses is needed
)
|| $r++ # case "(": increase balance counter
/ger;
$_ = "(" x $l . $_; # add opening parentheses at the begin of line
s/$/")" x $r/e # add closing parentheses before the line end
# the remainder is added by run-time switch "-p"
} continue {
print or die "-p destination: $!\n";
}
()
ডান বন্ধনী, বা কি অন্যান্য বন্ধনী{}
,[]
,<>
, ইত্যাদি প্রয়োজন ভাল হিসাবে বিবেচনা করা হবে?