সেশন-সেভিং কুইন


12

এই প্রশ্নের দ্বারা অনুপ্রাণিত ।

এমন একটি প্রোগ্রাম তৈরি করুন যা ব্যবহারকারীকে কিছু ডেটা সঞ্চয় করতে অনুরোধ জানায়, এবং যখন প্রোগ্রামটি ছাড়ছে, সেশনটির ডেটা পরিবর্তন না করে প্রোগ্রামটি নিজেই থুথু ফেলবে।

এরপরে ব্যবহারকারী সদ্য উত্পন্ন প্রোগ্রামটি খুলুন এবং পূর্ববর্তী প্রোগ্রামের ডেটা পুনরায় কল করতে পারেন।

কমান্ড

  • KEY VALUE: সেশন ভেরিয়েবলকে সেট KEYকরেVALUE
  • *: সমস্ত তথ্য সাফ করুন
  • ! KEY: মুছে ফেলা KEY
  • ? KEY: ক্যোয়ারী KEY(যদি উপস্থিত না থাকে: কিছুই মুদ্রণ না করে এগিয়ে যান)
  • অন্যথায়, প্রোগ্রামটি ছেড়ে দিন

কী বা মানের মধ্যে কোনও স্পেস থাকতে পারে না। নতুন উত্পন্ন প্রোগ্রামটির ফাইলের নাম অবশ্যই প্রোগ্রামটির সংস্করণ সনাক্ত করতে পারে, আপনি তারিখ বা কাউন্টার ব্যবহার করতে পারেন।

মিথস্ক্রিয়া উদাহরণ:

 name test                    store name = test
                              data is now { name: test }
 0 1                          data is now { name: test, 0: 1 }
 ? name                       output: test
 ! 0                          delete 0
                              data is now { name: test }
 hello good world             data is now { name: test, hello: good }
                              the extra word "world" is ignored
 egiwiwegiuwe                 the "otherwise" case: quit program

ব্যবহারকারী সদ্য উত্পন্ন প্রোগ্রামটি খোলে

 ? name                       output: test
 name retest                  data is now { name: retest }
 *                            clear
                              data is now { }

নমুনা বাস্তবায়ন: https://gist.github.com/1128876

বিধি

  • কুইন্ড প্রোগ্রামে আপনার মন্তব্য বা তুচ্ছ শ্বেতস্পেস সংরক্ষণ করার দরকার নেই: কেবল কার্যকারিতা এবং ডেটা সংরক্ষণ করুন
  • আপনি কোনও বাহ্যিক স্টোরেজ ব্যবহার করতে পারবেন না।
  • অন্য কোনও কুইনের সমস্যার মতো কোনও প্রতারণামূলক কুইন নেই।
  • সংক্ষিপ্ততম কোড জিতেছে।

এটি আমাকে এসকিউএল সার্ভারে এমন একটি ভিউ লিখেছিল যে সময়ের কথা মনে করিয়ে দেয় যা INSERT / আপডেট / ডিলিটি ট্রিগারগুলি ব্যবহার করে এবং নিজেই SELECT 1 AS ID, NAME AS BLAH UNION...
ভিউটিতে

প্রতারণামূলক কুইন কী বলে বিবেচিত?
কেসি চু

ক্যাসি, সাধারণত নিজের উত্স কোড পড়া।
জো

আহ। আমার জেএস সলিউশন এটি করতে খুব কাছাকাছি আসে, ওফস। ওহ ভাল, যেহেতু অনুমানটি সে সম্পর্কে স্পষ্ট নয়, তাই আমি এটি হ্রাস পাওয়ার ঝুঁকিতে ছেড়ে দেব।
ক্যাসি চু

উত্তর:


1

রুবি 1.9, 159 156

এই প্রোগ্রামটি "1", "2", "3" ইত্যাদি ফাইল তৈরি করে।

b={}
I=1
eval T="loop{c,d=gets.split
c==?*?b={}:d ?c==?!?b.delete(d):c==???puts(b[d]):b[c]=d :break}
open(I.to_s,?w){|f|f<<'b=%p
I=%d
eval T=%p'%[b,I+1,T]}"

1

ডি (৪১৯ টি চর)

enum c=q{string[string] m;import std.stdio;import std.array;void main(){foreach(string s;lines(stdin)){auto a=s.split;if(!a.length)goto e;switch(a[0]){case "*":m.clear;break;case "!":m.remove(a[1]);break;case "?":writeln(m.get(a[1],""));break;default:if(a.length<2){goto e;}m[a[0]]=a[1];}stdout.flush;}e:write("static this(){");foreach(i,v;m)writef("m[`%s`]=`%s`;",i,v);write("}enum c=q{",c,"};mixin(c);");}};mixin(c);

ফরম্যাট:

enum c=q{
    string[string] m;
    import std.stdio;
    import std.array;
    void main(){
        foreach(string s;lines(stdin)){
            auto a=s.split;
            if(!a.length)goto e;
            switch(a[0]){
                case "*":m.clear;break;
                case "!":m.remove(a[1]);break;
                case "?":writeln(m.get(a[1],""));break;
                default:if(a.length<2){goto e;}m[a[0]]=a[1];
            }
            stdout.flush;
        }
        e:write("static this(){");
        foreach(i,v;m)writef("m[`%s`]=`%s`;",i,v);
        write("}enum c=q{",c,"};mixin(c);");
    }
};mixin(c);

আমার ডি কুইনের বৈকল্পিক

*কমান্ড উপর নির্ভর m.clear;সঠিকভাবে কাজ যার ফলে এটি (কম্পাইলার মধ্যে বাগ) ডিএমডি 2.52 মধ্যে করে না

প্রয়োজনীয়তার stdout.flush;নির্ভর স্বয়ংক্রিয় ফ্লাশ সক্ষম কিনা (এটা আমার মেশিনে নয়)


1

জাভাস্ক্রিপ্ট, 245

(function(o,N){while(a=prompt()){a=a.split(' ')
b=a[0]
c=a[1]
if(b=='*')o={}
else if(b=='?'){if(o[c]!=N)alert(o[c])}
else if(b=='!')delete o[a[1]]
else if(c!=N)o[b]=c
else break}alert('('+arguments.callee+')('+JSON.stringify(o)+')')}({}))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.