/ / सरल एक्सओआर पर्ल में क्यों काम नहीं कर रहा है? - पर्ल, एक्सओआर

पर्ल में सरल एक्सओआर क्यों काम नहीं कर रहा है? - पर्ल, एक्सओआर

my $list = "1 3";
my @arr  = split " ", $list;
my $c    = $arr[0] ^ $arr[1];
print $c, "n";

उपरोक्त असामान्य चरित्र दे रहा है।

इसे 2 के रूप में जवाब देना चाहिए, क्योंकि 1 एक्सओआर 3 2 है।

उत्तर:

जवाब के लिए 8 № 1

^ यह निर्धारित करने के लिए कि कौन सी कार्रवाई करने के लिए अपने ऑपरेटिंग के आंतरिक भंडारण प्रारूप को मानता है।

>perl -E"say( 1^3 )"
2

>perl -E"say( "1"^"3" )"
☻

उत्तरार्द्ध तारों के प्रत्येक चरित्र को xors।

>perl -E"say( chr( ord("1")^ord("3") ) )"
☻

आप शून्य जोड़कर अंक को मजबूर कर सकते हैं।

>perl -E"@a = split(" ", "1 3"); say( (0+$a[0])^(0+$a[1]) )"
2

>perl -E"@a = map 0+$_, split(" ", "1 3"); say( $a[0]^$a[1] )"
2

तकनीकी रूप से, आपको केवल एक ऑपरेंड संख्यात्मक बनाने की आवश्यकता है।

>perl -E"@a = split(" ", "1 3"); say( (0+$a[0])^$a[1] )"
2

>perl -E"@a = split(" ", "1 3"); say( $a[0]^(0+$a[1]) )"
2

जवाब के लिए 2 № 2

यहां दो समस्याएं हैं:

  • $c1 तथा $c2 शुरुआत में अपरिभाषित हैं।
  • वे "तार कर रहे हैं।

(मैं मानता हूं कि वहां कुछ गुम है, जैसे कि "सी 1" और "सी 2" सूची के पहले / अंतिम तत्व क्रमश: 1 और 3 के रूप में निकाले जाते हैं)

प्रयत्न:

$list="1 2 3";
@arr=split(" ",$list);
$c=int($arr[0])^int($arr[2]);
print "$c";

the int फ़ंक्शन स्पष्ट रूप से एक संख्यात्मक मान के लिए डाले ।