উইকিপিডিয়া: দর্শন!


26

উইকিপিডিয়ায় অনেক গীক সম্ভবত বেশিরভাগ পৃষ্ঠাগুলি (৯৫% মনে করি) জেনে থাকতে পারে এবং শেষ পর্যন্ত এরকমভাবে দর্শনের দিকে পরিচালিত করে:

প্রথম অ-তাত্পর্যপূর্ণ বা বন্ধনী লিঙ্কে ক্লিক করুন যা অন্য একটি সাধারণ নিবন্ধের সাথে সম্পর্কিত: (যেমন ফাইল: বা বিশেষ নয়: তবে উইকিপিডিয়া: ঠিক আছে) এবং আপনি দর্শনের উপর চাপ না দেওয়া পর্যন্ত সেটির পুনরাবৃত্তি করুন।

স্ক্রিপ্ট অবশ্যই:

  • ইনপুট হিসাবে প্রথম পৃষ্ঠা নিন
  • এটি প্রতিটি নিবন্ধের নাম মুদ্রণ করুন
  • এবং ফিলোসফিতে যেতে কতগুলি নিবন্ধ লেগেছিল তা মুদ্রণ করুন এবং এটি যদি না বলে থাকে।

আপনি 1000 পয়েন্ট দিয়ে শুরু করুন এবং কোডের প্রতিটি অক্ষরের জন্য একটি হারাবেন, এর জন্য বোনাস পয়েন্ট:

লুপিং নিবন্ধগুলি সনাক্ত করা এবং থামানো: +50

লুপিং নিবন্ধগুলি সনাক্ত করা এবং ব্যবহারকারীর নিবন্ধটির পরবর্তী লিঙ্কে যেতে হবে কিনা তা অনুরোধ করা হচ্ছে: +170

কমান্ড-লাইন আর্গ বা অনুরূপ হিসাবে পূর্বের চেকটিতে ডিফল্ট হওয়ার অনুমতি দেওয়া হচ্ছে: +140

সর্বোচ্চ স্কোর জয়।


7
+1, দুর্দান্ত চ্যালেঞ্জ! এই প্রথম বন্ধনী সনাক্তকরণ শক্ত: পি
ডুরকনব

1
আমি এই কিছু ভাল সংজ্ঞা ব্যবহার করতে পারে অনুভূতি পেতে, কিন্তু ঠিক ঠিক কিভাবে ঠিক এখনও নিশ্চিত না।
ইসজি

3
টাইপ করা প্রতিটি অক্ষরের জন্য একটি পয়েন্ট হারাবেন। হুম। দুর্দান্ত, আমি পেয়েছি, আমি কেবল অক্ষরগুলি কপি-পেস্ট করব! পয়েন্ট হারিয়েছে না!
জাস্টিন

5
উত্তর ইতিমধ্যে পোস্ট করার পরে দয়া করে নিয়মগুলি পরিবর্তন করবেন না; এটি বেশ অভদ্র এবং সাধারণভাবে এখানকার সম্প্রদায়ের উপর
তাড়িয়ে দেওয়া

উত্তর:


8

রুবি, 1000 - 303 299 337 - 50 373 - 170 382 - 170 - 140 379 - 170 - 140 অক্ষর = 697 701 713 797 928 931

আমি নিশ্চিত যে এখানে আরও অনেক উন্নতি করতে হবে।

(এটি নোকোগিরি প্রয়োজন)

require'open-uri'
require'nokogiri'
x="/wiki/"+gets.chomp
r=[n=i=0]
until x=~/\/Philosophy/
d=Nokogiri.HTML open"http://en.wikipedia.org#{x}"
x=d.css('p a').select{|a|t=a.xpath('preceding::text()').map(&:text)*'';t.count('(')==t.count(')')&&a.attr('href')=~/^.wiki[^:]+$/}[i].attr'href'
i=0
puts r.index(x)?"#{$><<'i=';i=($*[0]||gets).to_i;''}": r.push(x)[-1][6..-1]
n+=1
end
p n

উদাহরণ রান:

c:\a\ruby>wikipedia_crawl_philosophy
Latin (note: this is my input)
Classical_antiquity
History
Umbrella_term
Terminology
Word
Linguistics
Science
Knowledge
Fact
Proof_(truth)
Argument
Logic
Reasoning
Consciousness
Quality_(philosophy)
Property_(philosophy)
Modern_philosophy
Philosophy
18

নমুনা একটি যেখানে আমাকে অন্য লিঙ্কে যেতে হয়েছিল

c:\a\ruby>wikipedia_crawl_philosophy
Snow
Precipitation_(meteorology)
Meteorology
Atmospheric_physics
Synoptic_scale_meteorology
i=2 // I put the 0-indexed number of the link I wanted to go to (so, the third link)

Weather
Atmosphere
Gas
State_of_matter#The_four_fundamental_states
Physics
Natural_science
Sciences
Knowledge
Fact
Proof_(truth)
Argument
Logic
Reasoning
Consciousness
Quality_(philosophy)
Property_(philosophy)
Modern_philosophy
Philosophy
25

আমি যে কৌশলগুলি ব্যবহার করেছি:

  • আমি নির্বাচককে p aকেবল নন-ইটালিক লিঙ্কগুলি পেতে ব্যবহার করেছি , কারণ প্রকৃত নিবন্ধের সমস্ত লিঙ্কগুলি যা ইটালিকগুলি নয় সর্বদা উইকিপিডিয়ায় অনুচ্ছেদে থাকে।

হুমম ... হতে পারে ভাষার সাথে আসা লাইব্রেরিগুলিকে ছাড়া আমার আর কোনও কথা বাতিল করা উচিত ...
AlphaModder

@ user1825860 এটি আসলে এমন একটি লাইব্রেরি নয় যা ভাষার সাথে আসে; এটি একটি মণি আমি আমার উত্তর সম্পাদনা করেছি। তবে সত্যই, আপনি এটি ইতিমধ্যে কঠোর চ্যালেঞ্জ নিতে চান এবং আমাদের এইচটিএমএল পার্সিং লাইব্রেরি ব্যবহার না করতে বাধ্য করতে চান? : P: P
Doorknob

আমি এটি অস্বীকার করছি না তবে আপনি পয়েন্ট হারাচ্ছেন: পি
আলফা মডডার

আপনার প্রথম পোস্টটি আবার
পড়তে হবে

2
@ ব্যবহারকারী 1825860 উত্তরগুলি ইতিমধ্যে পোস্ট করার পরে নিয়মগুলি পরিবর্তন করবেন না; এটি বেশ অভদ্র ...
ডোরকনব

5

"বেস " - (ভুল না হলে: 1000 - 397 + 170 + 140 = 913 পয়েন্ট)
"বেস" - (ভুল না হলে: 1000 - 386 + 170 + 140 = 924 পয়েন্ট)

"বেস" - (ভুল না হলে: 1000 - 381 + 170 + 140 = 929 পয়েন্ট)

BASH উদ্দেশ্য অনুসারে উদ্ধৃতিগুলিতে রয়েছে কারণ এটি * নিক্স শেলগুলিতে ব্যবহৃত সরঞ্জামগুলির মিশ্রণ কিন্তু ব্যাশ স্ক্রিপ্টে মোড়ানো।

সম্পাদনা 1:

  • এটির ডিফল্ট http://হিসাবে সরানো হয়েছে curl
  • href=অ্যাঙ্করগুলিতে ম্যাচ পরিবর্তিত হয়েছে f=কারণ এতে <a>অন্য কোনও সাধারণ বৈশিষ্ট্য নেই f। (এটি কাস্টম ট্যাগগুলির সম্ভাবনা। এখন পর্যন্ত কোনওটি দেখেনি))
  • এর !Philপরিবর্তে পাওয়া যায়নি এ প্রস্থান বার্তা সেট করুন NoPhil। এই এক একটি বিট করা বিচিত্র যেমন তোলা যায় বলতে পারে যেমন হয় !, 0, N, !Pবা অনুরূপ।
  • দ্বিতীয় দুটি ত্বক: -sঅন curlআরও তিনটি বাইট হ্রাস করতে অপসারণ করা যেতে পারে, কিন্তু এটি একটি অগোছালো আউটপুট পেতে পারে। নিশ্চিত না যে এটি কোনও সমস্যা কিনা।
  • এই পৃষ্ঠায় সাহায্য আপডেট হয়েছে ।

Quirks ব্যবহার করে কোডটি শেষ হবে 379 বাইট, 931 পয়েন্টে।

আমি ছয়টি বাইট যোগ করে (ছয়টি পয়েন্ট বিয়োগ করে ) মিলিয়ে (আশা করি) নেভিগেশন বাক্সের @ প্ল্যানাপাসের ব্যবহারও বাস্তবায়ন করতে পারি ।(p|ul).*?<(\1)

সম্পাদনা 2:

কাউন্টার ${#c[@]}পরিবর্তে পৃথকীকরণ ডিগ্রি মুদ্রণ ব্যবহার করে $i

Quirks ব্যবহার করে কোডটি শেষ হবে 374 বাইট, 936 পয়েন্টে।


আমি চথুলহুকে তলব করে একটি রেজিএক্সপ + বাশ / শেল / * নিক্স সমাধানের জন্য যাচ্ছি।

হৃত:

বাস্তবায়িত:

  • লুপটি সনাক্ত করুন এবং পরবর্তী লিঙ্কটি নেওয়া উচিত কিনা জিজ্ঞাসা করুন।
  • বিকল্প হিসাবে ডুপ্লিকেট নেভিগেশন পরবর্তী লিঙ্ক নির্বাচন করুন।

প্রয়োজনীয়তা:

  • bash বনাম।?
  • grepসঙ্গে -P(PCRE) সমর্থন।
  • sed
  • curl
  • cut

ব্যবহার:

script PATH [OPTIONS]

Print separation of article from ``PATH'' to ``Philosophy'' on Wikipedia.
Degrees of separation, if found, is printed as last line. 
If not found last line yields ``!Phil''.

PATH    
     Absolute path to starting article, e.g: /wiki/Word 
OPTIONS
     y   Automatically select next link if already visited.
     n   (Or other) Quit if next link already visited.
BUGS
     1. On previous visit; "next link" is not checked. Thus if next link
     has already been visited we get eternal loop. Not sure if this
     disqualify +170 points.
     2. Sure there are.

ইনলাইন কোড। ফাইল অনুলিপি করুন। chmod +x filename./script /wiki/…বাশ শেল থেকে চালানো ।

u=($1);c=($1);while ! [[ "$u" =~ /Philosophy$ ]];do echo "$u";u=($(curl -s "en.wikipedia.org$u"|tr '\n' ' '|grep -Po '<p>.*?</p>'|sed 's/>[^<]*([^)]*)//g'|grep -o '<a [^>]*f="/wiki/[^":]*"'|cut -d\" -f2));for x in "${c[@]}";do if [ "$x" = "$u" ];then [ $2 ] &&s=$2||read -p "${u[0]}?" s;[ $s = y ] &&u[0]=${u[1]}||{ echo "!Phil";exit;} fi;done;c=("${c[@]}" "$u");done;echo ${#c[@]};

কোড সম্প্রসারিত এবং ব্যাখ্যা করা হয়েছে:

u=($1); # Array of paths.
c=($1); # Array of visited paths.
# While $u != /Philosophy, ugly trick is to use $u instead of ${u[0]}.
while ! [[ "$u" =~ /Philosophy$ ]];do   
        echo "$u";      # Print current page.
        # curl   : prints retreived page to stdout. "-s" could be skipped.
        # tr     : replace all newline with space. This is a ®sanity thing when it comes to 
        #          twidling with html using regex.
        # grep 1 : match <p> tags. Using -P's ungreedy *?.
        # sed    : remove all occurences of "(" something ")".
        # grep 2 : match links where "href" attribute starts with /wiki/ and is not e.g. File:
        # cut    : match actual href value.
        # Result is added to array ``u''.
        u=($(curl -s "en.wikipedia.org$u" |
                tr '\n' ' ' | 
                grep -Po '<p>.*?</p>' | 
                sed 's/>[^<]*([^)]*)//g' | 
                grep -o '<a [^>]*f="/wiki/[^":]*"' | 
                cut -d\" -f2));

        # For previously visited pages as x.
        for x in "${c[@]}"; do 
                # If x equals to first page ...
                if [ "$x" = "$u" ]; then        
                        # Use option or ask.
                        [ $2 ] && s=$2 || read -p "${u[0]}?" s; 
                        # If response is "y" use next link, else exit with status.
                        [ $s = y ] && u[0]=${u[1]} || { 
                                echo "!Phil"; 
                                exit;
                        } 
                fi;
        done;
        # Append current link to "visited"
        c=("${c[@]}" "$u"); 
done;
# Print number of visited pages.
echo ${#c[@]}

এটিকে ঘৃণা করুন, আপনি আমাকে এক পয়েন্ট দিয়ে মারলেন! : পি আমি আমার সমাধানটি আরও গল্ফ করতে যাচ্ছি
ডোরকনব

ইয়ে;), তবে নিশ্চিত নয় যে এটি বৈধ কোড। এইভাবে সরঞ্জাম ব্যবহার করা।
রানিয়াম

5

জাভাস্ক্রিপ্ট 726 (444 অক্ষর [556] + 170)

এখন আমি প্রশংসা করি যে এটি বুকমার্কলেট হিসাবে বৈধ নাও হতে পারে, তবে যাইহোক আমি এটির সাথে টিঙ্কিংয়ের বিষয়টি উপভোগ করেছি।

ব্যবহার: আপনি যে পৃষ্ঠাটি থেকে শুরু করতে চান এবং নীচের কনসোলে চালনা করতে চান তাতে নেভিগেট করুন:

(function(a){c=0,o="";$(u="html")[u](f=$('<iframe src="'+location+'?">').on("load",function(){$=f.contentWindow.$;p=f.contentDocument.title[s="split"](" - ")[0];c++;p=="Philosophy"?document.write("<pre>"+o+p+"\n"+c):(i=RegExp("^"+p+"$","m").test(o)?a||confirm("Loop, try next?")?2:0:1)&&(f.src=$("p>a").filter(function(){return(t=$(this).parent()[u]()[s](this.outerHTML)[0])[s]("(").length==t[s](")").length})[--i].href);o+=p+"\n"})[0])})(true)

জাভাস্ক্রিপ্টের জন্য আউটপুট নিম্নলিখিত:

JavaScript
Interpreter (computing)
Computer science
Science
Knowledge
Fact
Proof (truth)
Argument
Logic
Reason
Consciousness
Quality (philosophy)
Property (philosophy)
Modern philosophy
Philosophy
15

এই সমাধানটি ধরে নেওয়া হচ্ছে যে আপনি লুপটি সনাক্ত হওয়ার পরে পরবর্তী লিঙ্কটিতে ঝাঁপিয়ে trueপড়তে চান , তবে আপনি যদি শেষে falseএটি পরিবর্তন করেন তবে পরিবর্তে একটি নিশ্চিতকরণ বাক্স পপ আপ করবেন (বেশ বিরক্তিকর ...) নিশ্চিত হন না যে এটির জন্য যোগ্যতা অর্জন করে কিনা? গৌণ বোনাস বা না। আমি ধরে নিব না

ইন্ডেন্টযুক্ত:

(function(l){
    c=0,o='';
    $(u='html')[u](f=$('<iframe src="'+location+'?">').on('load',function(){ // Firefox needs the ? to properly load the frame
        $=f.contentWindow.$; // reference repeated calls as strings to save more bytes
        p=f.contentDocument.title[s='split'](' - ')[0]; // get the title

        c++;
        p=='Philosophy'?
            document.write('<pre>'+o+p+'\n'+c): // pre for nice formatting
            (i=RegExp('^'+p+'$','m').test(o)?
                l||confirm('Loop, try next?')?
                    2: // desired index + 1 so we can use as a boolean
                    0
                :
                1)&&
            (f.src=$('p>a').filter(function(){
                return (t=$(this).parent()[u]()[s](this.outerHTML)[0])[s]('(').length == t[s](')').length // shorter, but still not overly happy with this...
            })[--i].href);
            o+=p+'\n' // update output
    })[0])
})(true) // change this to show confirm box when loop detected

সুতরাং আমি মূলত পেরেনগুলির আইটেমগুলি উপেক্ষা করার অংশটি মিস করেছি, এটি যুক্ত করে এটি আরও বেশি স্পষ্ট করে তুলেছে, তাই আমি গল্ফটি আশা করি যে ফিল্টারটি কার্যকর হবে (বা আশা করি এটি পুরোপুরি প্রতিস্থাপন করবে))

ক্রোম এবং ফায়ারফক্স উভয় ক্ষেত্রেই কাজ করা (ফায়ারফক্স ২ in এ পরীক্ষিত)


2
সন্ত্রস্ত দেখায়, কিন্তু ফায়ারফক্স 20 অন্যথা করেন
boothby

Argghh! আমি কেবল ক্রোম পরীক্ষা করেছি। আমি এটার দিকে নজর রাখব!
ডম হেস্টিংস

@ বুথবি এখন ফায়ারফক্সে কাজ করা উচিত ... তবুও আমি যে লিঙ্কগুলি বেছে নিচ্ছি তার উপর কাজ করতে চাই!
ডম হেস্টিংস

5

সি # - 813 টি অক্ষর

স্কোর: 1000-813 + 50 + 170 + 140 = 547 :(

বাহ্যিক গ্রন্থাগার নেই। লুপ সনাক্তকরণ

প্রথম যুক্তি হ'ল সোর্স আর্টিকেল, দ্বিতীয়টি টার্গেট আর্টিকেল।

গল্ফ সংস্করণ:

class Program
{
    static void Main(string[] a)
    {
        Func<XmlDocument,IList<string>> G=delegate(XmlDocument xd){return xd.SelectNodes("//p//a[starts-with(@href,'/wiki/') and not(contains(@href,':'))]").Cast<XmlNode>().Select(n=>n.Attributes["href"].InnerText).ToList();};Action<string> W=delegate(string s){Console.WriteLine(s);};var h=new HashSet<string>();var c=new WebClient();var x=new XmlDocument();var t=c.DownloadString(@"http://wikipedia.org/wiki/"+a[0]);int i=0,C=0;
    GO:
        x.LoadXml(t);var ns=G(x);
    COL:
        var f=ns[i];if(f.Equals("/wiki/"+a[1],StringComparison.OrdinalIgnoreCase)){goto END;}if(h.Contains(f)){W("loop: "+f);i++;goto COL;}else{h.Add(f);i=0;C++;}W(f);t=c.DownloadString(@"http://wikipedia.org"+f);goto GO;
    END:
        W("Found in "+C);
    }
}

বোধগম্য সংস্করণ:

class Program
{
    // arg[0] source article. arg[1] target article
    static void Main(string[] arg)
    {
        Func<XmlDocument, IList<string>> G = delegate(XmlDocument xd)
        {
            return xd.SelectNodes("//p//a[starts-with(@href,'/wiki/') and not(contains(@href,':'))]").Cast<XmlNode>().Select(n => n.Attributes["href"].InnerText).ToList();
        };
        Action<string> W = delegate(string s) { Console.WriteLine(s); };
        var h = new HashSet<string>(); var c = new WebClient(); var x = new XmlDocument();
        var allText = c.DownloadString(@"http://wikipedia.org/wiki/" + arg[0]);
        int i = 0; int C = 0;
    GO:
        x.LoadXml(allText);
        var ns = G(x);
    COL:
        var f = ns[i];
        if (f.Equals("/wiki/" + arg[1], StringComparison.OrdinalIgnoreCase))
        {
            goto END;
        }
        if (h.Contains(f))
        {
            W("loop: " + f); i++; goto COL;
        }
        else
        {
            h.Add(f); i = 0; C++;
        }
        W(f);
        allText = c.DownloadString(@"http://wikipedia.org" + f);
        goto GO;
    END:
        W("Found in " + C);
    }
}

"স্কাই" থেকে "দর্শন" পর্যন্ত রান উদাহরণ:

C:\>wiki.exe Sky Philosophy

/wiki/Earth
/wiki/Geometric_albedo
/wiki/Phase_angle_(astronomy)
/wiki/Observational_astronomy
/wiki/Astronomy
/wiki/Natural_science
/wiki/Sciences
/wiki/Latin_language
/wiki/Classical_antiquity
/wiki/History
/wiki/Ancient_Greek
/wiki/Greek_language
/wiki/Modern_Greek
loop: /wiki/Greek_language
/wiki/Colloquialism
/wiki/Word
/wiki/Linguistics
/wiki/Science
loop: /wiki/Latin_language
/wiki/Knowledge
/wiki/Fact
/wiki/Latin
loop: /wiki/Classical_antiquity
/wiki/Italic_languages
/wiki/Indo-European_languages
/wiki/Language_family
/wiki/Language
/wiki/Human
/wiki/Extinct
/wiki/Biology
loop: /wiki/Natural_science
/wiki/Life
loop: /wiki/Earth
/wiki/Physical_body
/wiki/Physics
loop: /wiki/Greek_language
loop: /wiki/Natural_science
/wiki/Matter
/wiki/Rest_mass
/wiki/Center_of_momentum_frame
loop: /wiki/Physics
/wiki/Inertial_frame
loop: /wiki/Physics
/wiki/Frame_of_reference
loop: /wiki/Physics
/wiki/Coordinate_system
/wiki/Geometry
loop: /wiki/Ancient_Greek
/wiki/Mathematics
/wiki/Quantity
/wiki/Property_(philosophy)
/wiki/Modern_philosophy
Found in 41

C:\>

5

স্কালা (294 অক্ষর => 1000-294 + 140 = 846 পয়েন্ট)

আপডেট হওয়া সমাধানটি যদি ইতিমধ্যে একটি গ্রাস হয়ে থাকে তবে স্বয়ংক্রিয়ভাবে পরবর্তী লিঙ্কটি নেয়। 140 বোনাস পয়েন্টের জন্য ধন্যবাদ।

যুক্তি: প্রথম "/ উইকি" লিঙ্কটি ধরুন যাতে এতে ":" নেই (তাই এটি "ফাইল:" লিঙ্কগুলিকে উপেক্ষা করে)। ধুয়ে ফেলুন এবং পুনরাবৃত্তির সাথে পুনরাবৃত্তি করুন প্রতিবার +1 গণনা ফেরত। আমি আগের সমস্ত আউটপুটগুলির একটি তালিকা হাতে রাখি যাতে প্রোগ্রামটি অসীম লুপে না যায়।

নিয়মিত প্রকাশ: আমার নিয়মিত প্রকাশের 2 টি রূপ রয়েছে।

  • "<p>.*?\"/wiki/([^:]*?)\".*?/p>"যা <p>ট্যাগগুলির মধ্যে লিঙ্কগুলি সন্ধান করে
  • "p>.*?/wiki/([^:]*?)\""এটি একটি সামান্য আরও পরীক্ষামূলক ট্যাগ যা কাজ করে প্রমাণিত হয়েছে তবে বিভিন্ন ফলাফল সরবরাহ করে কারণ এটি মাঝে মাঝে ডান পাশের তথ্য বার থেকে লিঙ্কগুলি তুলে দেয়। এগুলি নিয়মিত নিবন্ধসমূহ তাই আমি বিশ্বাস করি এটি এখনও বৈধ। যদি এটি না হিসাবে রায় দেওয়া হয়, তবে ওপি (বা অন্য কেউ) আমাকে একটি মন্তব্য দিতে পারে এবং আমি আমার সমাধানটি আরও ভাল রেজিস্ট্র-এ আপডেট করতে পারি।

আমি দ্বিতীয় নিয়মিত অভিব্যক্তিটি ব্যবহার করব যতক্ষণ না আমি টেস্টের কেসটি কাজ করি না যেখানে এটি কাজ করে না বা ওপিকে সাইড বার থেকে লিঙ্কগুলি তুলে নেওয়ার অনুমতি নেই (আমার মতে, তথ্য বারগুলি এখনও এর অংশ প্রকৃত নিবন্ধটি নিজেই; একটি সংক্ষিপ্তসার আরও)।


সংক্ষিপ্ত উত্স:

object W extends App{print(x(Seq(args(0))));def x(s:Seq[Any]):Int={val? =s.last;println(?);?match{case "Philosophy"=>1;case _=>x(s:+"p>.*?/wiki/([^:]*?)\".*?/p>".r.findAllMatchIn(io.Source.fromURL("http://en.wikipedia.org/wiki/"+ ?).getLines.mkString).map(_ group 1).filter(!s.contains(_)).next)+1}}}

পঠনযোগ্য উত্স:

object W extends App {
  print(x(Seq(args(0))))

  def x(s: Seq[Any]): Int = {
    val ? = s.last
    println(?)
    ? match {
      case "Philosophy" => 1
      case _ => x(s :+ "p>.*?/wiki/([^:]*?)\"".r.findAllMatchIn(io.Source.fromURL("http://en.wikipedia.org/wiki/" + ?).getLines.mkString).map(_ group 1).filter(!s.contains(_)).next) + 1
    }
  }
}

নমুনা আউটপুট:

ইনপুট

Space_toilet

আউটপুট

Space_toilet
Weightlessness
G-force
Weight
Force
SI_unit
French_language
Second_language
Language_acquisition
Word
Linguistics
Science
Latin_language
Pontifical_Academy_for_Latin
Pope_Benedict_XVI
Pope_Benedict_(disambiguation)
Regnal_name#Catholic_Church
Monarch
State_(polity)
Community
Commutative_property
Mathematics
Quantity
Property_(philosophy)
Modern_philosophy
Philosophy
26

1
স্কালার জন্য কোনও প্রধান অবজেক্ট বা পদ্ধতি প্রয়োজন হয় না। আপনি এটি "স্কালা <ফাইলী>> আরগস ..]" হিসাবে দোভাষী দিয়ে চালাতে পারেন। args(0)প্রথম যুক্তিটি পেতে, আপনার objectএবং mainসংজ্ঞাগুলি থেকে মুক্তি পেতে ব্যবহার করুন এবং আমি মনে করি আপনি :Intএটিও সরাতে পারেন । পেস্টবিন.
com

দেখা যাচ্ছে আপনি এটিকে সরাতে পারবেন না : Int। বুঝতে পারেনি যে আপনি পুনরাবৃত্তি কল করছেন। এছাড়াও আমার পেস্টবিনটি আপনার পুরানো পাঠযোগ্য উত্স থেকে নেওয়া হয়েছিল, তবে একই ধারণাটি প্রযোজ্য।
কেচালোক্স

আমি মূল পদ্ধতি থেকে মুক্তি পাওয়ার চেষ্টা করব এবং হ্যাঁ, পুনরাবৃত্ত কলগুলি আমাকে :Intসেখানে যুক্ত করেছিল । পরে আজ, আমি আমার কাছে থাকা 333 চর সমাধানের একটি পঠনযোগ্য ফর্ম যুক্ত করব। @ কেচালৌক্স
জাভাতারz

1
আমি যেমন বলেছি, object Q extends App { ... }আপনি যদি স্ক্যালাক দিয়ে সংকলনের পরিবর্তে দোভাষী দিয়ে কোডটি চালান তবে রেফারেন্সটি সম্পূর্ণ অপ্রয়োজনীয়। স্রেফ দৌড়াতেscala <filename> [args..]
কেচালাক্স

4

আর, 379 অক্ষর; 1000-379 + 170 = 791 পয়েন্ট

লুপ সনাক্তকরণের সময় ব্যবহারকারীদের কীভাবে এগিয়ে যেতে হবে তা জিজ্ঞাসা করে এমন সংস্করণ

library(XML);w="http://en.wikipedia.org";W="/wiki/";n=1;A=c(scan(,""));while(A[n]!="Philosophy"){a=paste0(w,W,A[n]);d=sapply(strsplit(grep(W,sapply(xpathApply(xmlParse(readLines(a)),"//p/a[@href]|//ul/li/a[@href]",xmlAttrs),`[`,'href'),v=T),"/"),`[`,3);B=d[-grep(":",d)];n=n+1;if(B[1]%in%A)if(readline("Loop!2nd link?")=="n")break;A[n]=head(B[!B%in%A],1);cat(A[n],"\n")};cat(n-1)

ইন্ডেন্টেশন এবং মন্তব্য সহ:

library(XML) #Uses package XML
w="http://en.wikipedia.org"
W="/wiki/"
n=1
A=c(scan(,"")) #Stdin + makes it a vector so we can store each iteration
while(A[n]!="Philosophy"){
    a=paste0(w,W,A[n])
    d=sapply(strsplit(grep(W,sapply( #The heart of the program
             xpathApply(xmlParse(readLines(a)),"//p/a[@href]|//ul/li/a[@href]",xmlAttrs),
             `[`,'href'),v=T),"/"),`[`,3)
    B=d[-grep(":",d)] #get rid of Templates, Files ,etc...
    n=n+1
    #Ask user if should proceed when loop encountered 
    #(any answer other than "n" is considered agreement):
    if(B[1]%in%A)if(readline("Loop!2nd link?")=="n")break
    A[n]=head(B[!B%in%A],1) #Take the first link that is not redundant
    cat(A[n],"\n")
    }
cat(n-1)

উদাহরণ রান:

> library(XML);w="http://en.wikipedia.org";W="/wiki/";n=1;A=c(scan(,""));while(A[n]!="Philosophy"){a=paste(w,W,A[n],sep="");d=sapply(strsplit(grep(W,sapply(xpathApply(xmlParse(readLines(a)),"//p/a[@href]|//ul/li/a[@href]",xmlAttrs),`[`,'href'),v=T),"/"),`[`,3);B=d[-grep(":",d)];n=n+1;if(B[1]%in%A)if(readline("Loop!2nd link?")=="n")break;A[n]=head(B[!B%in%A],1);cat(A[n],"\n")};cat(n-1)
1: Extended_ASCII
2: 
Read 1 item
Eight-bit 
Computer_architecture 
Computer_science 
Science 
Logic 
List_of_aestheticians 
Art 
Human_behavior 
Behavior 
Organism 
Biology 
Loop!2nd link?y
Mathematics 
Quantity 
Property_(philosophy) 
Modern_philosophy 
Philosophy 
16

আর, 325 অক্ষর; ??? পয়েন্ট

সংস্করণ, ডিফল্টরূপে প্রথম অ-রিন্ডানড লিঙ্ক নেয় (অর্থাত্ নন-লুপিং)।

library(XML);w="http://en.wikipedia.org";W="/wiki/";n=1;A=c(scan(,""));while(A[n]!="Philosophy"){a=paste0(w,W,A[n]);d=sapply(strsplit(grep(W,sapply(xpathApply(xmlParse(readLines(a)),"//p/a[@href]|//ul/li/a[@href]",xmlAttrs),`[`,'href'),v=T),"/"),`[`,3);B=d[-grep(":",d)];n=n+1;A[n]=head(B[!B%in%A],1);cat(A[n],"\n")};cat(n-1)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.