একাধিক ব্যবহারকারীর CRUD: বৈধ, সমস্যা, বা ত্রুটি?


13

ভূমিকা :

অন্য কোনও ব্যক্তির সাথে কখনও ড্রপবক্স ব্যবহার করেছেন এবং আপনি দুজনেই একই ফাইলটি সংশোধন করেছেন? কোনও রিলেশনাল ডাটাবেস সহ কোনও বহু-ব্যবহারকারীর অ্যাপ্লিকেশন ছিল এবং দু'জন লোক একই বস্তুকে সংশোধন করছে (বা আরও খারাপ, একজন মুছে ফেলছে এবং অন্যটি সংশোধন করছে)? ঠিক আছে, আসুন আমরা এই চ্যালেঞ্জটি দিয়ে সাজান (সাজানোর)।

এই চ্যালেঞ্জের স্বার্থে, আমাদের কাছে কেবলমাত্র দুটি ব্যবহারকারী এবং এক বা দুটি প্রাসঙ্গিক ফাইল রয়েছে। উভয় ব্যবহারকারীরই সমস্ত ফাইল সিআরইউডির ( সাধারণভাবে তৈরি করুন, পড়ুন, আপডেট করুন এবং মুছুন) সুবিধে রয়েছে

চ্যালেঞ্জ:

ইনপুট:

আমাদের কয়েকটি ইনপুট থাকবে (ইনপুট ফর্ম্যাটটি নমনীয় এবং কোনও যুক্তিসঙ্গত বিন্যাস অনুমোদিত):

1) লকিং মোড (চালু / বন্ধ) : আশাবাদী এবং হতাশাবাদী একমত লকিংয়ের মধ্যে পার্থক্য রাখুন ।
উভয় ব্যবহারকারীকেই CRUD (তৈরি করুন, পড়ুন, আপডেট করুন এবং মুছুন) -এর অনুমতি দেওয়া হয় তবে অনেক সময় ত্রুটি বা সমস্যা দেখা দিতে পারে। বন্ধ করার সময় লকিং মোডের উপর নির্ভর করে কোনও সমস্যা চালু করা থাকলে ত্রুটি হতে পারে। এটি আউটপুট বিভাগে নীচে ব্যাখ্যা করা হয়েছে ।

2 এবং 3) দুটি ব্যবহারকারীর ক্রিয়া । এই ক্রিয়াগুলি সর্বদা দুটি জিনিস নিয়ে থাকে: ব্যবহারকারী কী করে (তৈরি করুন, পড়ুন, আপডেট করুন বা মুছুন) এবং কোন ফাইলের জন্য।

আউটপুট:

আমাদের তিনটি সম্ভাব্য আউটপুট থাকবে:

  1. বৈধ : উভয় ব্যবহারকারীর দ্বারা উভয় ক্রিয়া কোনও সমস্যা না ঘটাইয়া একসাথে করা যেতে পারে।
  2. ত্রুটি : উভয় ব্যবহারকারীর দ্বারা উভয় ক্রিয়া একই সাথে করা যায় না এবং ব্যবহারকারীদের মধ্যে একটির জন্য ত্রুটি সৃষ্টি করে (কোন ব্যবহারকারী এই চ্যালেঞ্জের জন্য অপ্রাসঙ্গিক)। এটি যখন হতে পারে:
    • একটি ব্যবহারকারী একটি ফাইল পড়ে বা আপডেট করে যা অন্য ব্যবহারকারী মুছে ফেলে;
    • উভয় ব্যবহারকারী লকিং মোড চালু করে একই ফাইল আপডেট করুন;
    • কোনও ব্যবহারকারী একটি ফাইল তৈরি করে, যা অন্য ব্যবহারকারী পড়ে / আপডেট / মুছে ফেলে (এর অর্থ ফাইলটি ইতিমধ্যে বিদ্যমান, সুতরাং এটি তৈরি করা যায় না);
    • উভয় ব্যবহারকারী একই ফাইল তৈরি করুন।
  3. সমস্যা : উভয় ব্যবহারকারীর দ্বারা উভয় ক্রিয়া একই সাথে করা যেতে পারে তবে অপ্রত্যাশিত সমস্যার কারণ হতে পারে। এটি যখন হতে পারে:
    • উভয় ব্যবহারকারী লকিং মোডটি বন্ধ করার সময় একটি ফাইল আপডেট করেন;
    • একটি ব্যবহারকারী একটি ফাইল আপডেট করে, যা অন্য ব্যবহারকারী পড়েন;
    • উভয় ব্যবহারকারী একই ফাইল মুছুন (ব্যবহারিকভাবে এটি দ্বিতীয় ব্যবহারকারীর জন্য একটি ত্রুটির কারণ ঘটবে, তবে যেহেতু এটি এখনও ব্যবহারকারী মুছে ফেলা হবে তাই এই চ্যালেঞ্জের জন্য ত্রুটির পরিবর্তে এটি সমস্যা হবে)

চ্যালেঞ্জ বিধি:

  • সমস্ত ইনপুট এবং আউটপুট নমনীয় এবং প্রত্যেকেরই উচিত তাদের উত্তরগুলিতে কোনটি ব্যবহার করেছে তা জানিয়ে দেওয়া উচিত!
    উদাহরণস্বরূপ ইনপুট: 0/ 1লকিং মোডের জন্য & 31(তৃতীয় ক্রিয়া: আপডেট; ফাইল: 1) & 21(দ্বিতীয় ক্রিয়া: পড়ুন; ফাইল: 1); true/ falseলকিং মোডের জন্য & ['C','A'](ক্রিয়া: তৈরি করুন; ফাইল: ক) & ['D','B'](ক্রিয়া: মুছুন; ফাইল: বি); ইত্যাদি
    উদাহরণ ফলাফল: null/ true/ false(নাল = বৈধ; সত্য = ত্রুটি; মিথ্যা = সমস্যা); -1/ 0/ 1(-1 = ত্রুটি; 0 = সমস্যা; 1 = বৈধ); ইত্যাদি তিনটি আউটপুট তিনটি আউটপুট-টাইপের জন্য স্বতন্ত্র এবং স্বতন্ত্র হতে হবে , যদিও।
  • ফাইলগুলি কী বলা হয় তা অপ্রাসঙ্গিক, যা উপরের ইনপুট-উদাহরণগুলির সাথেও দেখা যায়। সুতরাং আপনার উত্তরগুলিতে কোনও একক (ASCII) চিঠি বা অঙ্ক সমন্বিত কোনও প্রকারের ফাইল নাম নির্দ্বিধায় ব্যবহার করুন। তবে আপনার সমস্ত পরীক্ষার ক্ষেত্রে এগুলি সামঞ্জস্যপূর্ণ হতে হবে, সুতরাং আপনি একটি পরীক্ষার ক্ষেত্রে / এবং অন্য কোনও ক্ষেত্রে A/ ব্যবহার করতে পারবেন না ।B12
  • সিআরইউডির জন্য চারটি ক্রিয়াটিও অনন্য এবং ধারাবাহিক মান হতে হবে। সুতরাং আপনি একটি পরীক্ষার ক্ষেত্রে / এবং অন্য / পরীক্ষার ক্ষেত্রে 'D'/ ব্যবহার করতে পারবেন না ।'C'41
  • আপনি ধরে নিতে পারেন যে কোনও ব্যবহারকারী দ্বারা নির্বাচিত ফাইলটি সর্বদা উপস্থিত থাকে যখন তারা এটি পড়তে, আপডেট করতে বা মুছতে চায়।

সপ্তাহের দিন:

  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার জন্য যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • আপনার উত্তরটির জন্য ডিফল্ট আই / ও বিধিগুলির সাথে মানক বিধিগুলি প্রযোজ্য , সুতরাং আপনাকে সঠিক পরামিতি এবং ফিরতি-টাইপ, সম্পূর্ণ প্রোগ্রাম সহ STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহারের অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • যদি সম্ভব হয় তবে দয়া করে আপনার কোডের (যেমন টিআইও ) একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন ।
  • এছাড়াও, আপনার উত্তরের জন্য একটি ব্যাখ্যা যুক্ত করা অত্যন্ত প্রস্তাবিত।

সমস্ত সম্ভাব্য পরীক্ষার কেস (যেখানে ক্রিয়াগুলি ইনপুট-অর্ডারে হতে পারে ):

: আপনার নীচের পরীক্ষার কেসগুলির সমস্ত (চারটি পর্যন্ত) প্রকারের সমর্থন করা উচিত। সুতরাং যদি কোনও পরীক্ষার কেস বলে action1: Create file A; action2: Update file B, সেই পরীক্ষার ক্ষেত্রেও একই ফলাফল রাখা উচিত action1: Create file B; action2: Update file A; action1: Update file B; action2: Create file A; এবং action1: Update file A; action2: Create file B

Valid use-cases:

locking mode: either;  action1: Create file A;  action2: Create file B
locking mode: either;  action1: Create file A;  action2: Read file B
locking mode: either;  action1: Create file A;  action2: Update file B
locking mode: either;  action1: Create file A;  action2: Delete file B
locking mode: either;  action1: Read file A;    action2: Read file A
locking mode: either;  action1: Read file A;    action2: Read file B
locking mode: either;  action1: Read file A;    action2: Update file B
locking mode: either;  action1: Read file A;    action2: Delete file B
locking mode: either;  action1: Update file A;  action2: Update file B
locking mode: either;  action1: Update file A;  action2: Delete file B
locking mode: either;  action1: Delete file A;  action2: Delete file B

Error use-cases:

locking mode: either;  action1: Create file A;  action2: Create file A
locking mode: either;  action1: Create file A;  action2: Read file A
locking mode: either;  action1: Create file A;  action2: Update file A
locking mode: either;  action1: Create file A;  action2: Delete file A
locking mode: either;  action1: Read file A;    action2: Delete file A
locking mode: on;      action1: Update file A;  action2: Update file A
locking mode: either;  action1: Update file A;  action2: Delete file A

Problem use-cases:

locking mode: either;  action1: Read file A;    action2: Update file A
locking mode: off;     action1: Update file A;  action2: Update file A
locking mode: either;  action1: Delete file A;  action2: Delete file A

2
আমি মনে করি যে 1 বাইট সমাধান হবে যদি আমি কেবল সঠিক ইনপুট / আউটপুট পদ্ধতি (সম্ভবত কোনওরকম বিট মাস্কিং) নিয়ে আসতে পারি
মেয়াদউত্তীর্ণ ডেটা

2
@ এক্সপায়ার্ডডাটা সম্ভাব্য আউটপুটগুলির কয়েকটি অংশ পরিবর্তিত করেছে, এটি সুসংগত হতে হবে তবে অগত্যা অনন্য নয়। এবং এছাড়াও ইনপুট সামঞ্জস্যপূর্ণ হতে হবে।
কেভিন ক্রুইজসেন

1
@ আর্নল্ড আহ, আমি B/Bআমার গণনায় সমস্ত মামলা বাদ দিয়েছি , যেহেতু আমি এগুলির মতোই বলেছি A/A। পার্থক্য কোথা থেকে আসছে। তবে আমি অনুমান করি যে আপনার যদি ফাইলগুলির জন্য একটি নির্দিষ্ট মান থাকে তবে চিন্তাভাবনাটি ভুলভাবে হয় ..
কেভিন ক্রুইজসেন

উত্তর:


8

জাভাস্ক্রিপ্ট (ES6), 36 বাইট

একটি সন্ধানের টেবিল ছাড়া

(m,a,f,A,F)=>f-F?2:a^A?a*A&8:a&4?m:a

এটি অনলাইন চেষ্টা করুন!

ইনপুট / আউটপুট

  • মি08
  • একটিএকজন0248
  • এফ
  • 028

কিভাবে?

2

ফাইলগুলি অভিন্ন হলে আমাদের ফিরে আসতে হবে:

  • 2
  • 8
  • মি
  • 0

4×4

a ^ Aএকটিএকজন? ? a * A & 8 : এ এবং 4হালনাগাদ? ? মি:একটি

সিআরইউডি0248সি00000আর20280ইউ408মি0ডি80008


জাভাস্ক্রিপ্ট (ES6),  46 45  40 বাইট

একটি সারণী সঙ্গে

(m,a,f,A,F)=>f-F?0:[m,1,1,0][a*2+A*9&23]

এটি অনলাইন চেষ্টা করুন!

ইনপুট / আউটপুট

  • 1
  • 0123
  • ফাইল: যে কোনও পূর্ণসংখ্যা
  • 01

4

রেটিনা 0.8.2 , 53 বাইট

^(.)(?!\1).+|..RR.
V
..DD.
P
..UUL
E
.+[CD].+
E
..+
P

এটি অনলাইন চেষ্টা করুন! লিঙ্কে পরীক্ষার স্যুট অন্তর্ভুক্ত। 5 টি অক্ষরের স্ট্রিং হিসাবে ইনপুট নেয়, ফাইলের নাম উপস্থাপন করে দুটি অক্ষর CRUD, তারপরে Lবা U(লক / আনলক করা) থেকে দুটি অক্ষর এবং এর মধ্যে একটি VPE(বৈধ / সমস্যা / ত্রুটি) আউটপুট দেয় । ব্যাখ্যা:

^(.)(?!\1).+|..RR.
V

দুটি ফাইলের মতো বিভিন্ন ফাইলের নাম সর্বদা বৈধ। বিরক্তিকরভাবে, এটিই একমাত্র পরীক্ষা যা আমাকে শিরোনাম ব্যবহার করতে বাধ্য করে। (শিরোনামটিকে অপ্রয়োজনীয় করে তুলতে অতিরিক্ত বাইট লাগবে))

..DD.
P

দুটি মুছে ফেলা সর্বদা একটি সমস্যা।

..UUL
E

দুটি লক করা আপডেট একটি ত্রুটি।

.+[CD].+
E

অন্য কোনও সৃষ্টি বা মুছে ফেলা একটি ত্রুটি।

..+
P

বাকি সবই সমস্যা।


3

অক্টাভা , 96 বাইট

@(a,b,c)[a(1)!=b(1)|a(2)+b(2)==20,mod((m=a+b+c)(2),10010)<1|mod(m(2),1020000)<1|mod(m(2),200)<1]

এটি অনলাইন চেষ্টা করুন!

অবশ্যই সংক্ষিপ্ততর হতে পারে তবে তা করার জন্য আমার কাছে এখনই সময় নেই

File 1 = 0
File 2 = 1
Read = 10
Delete = 100
Create = 1000 
Update = 10000
Lock on = 100000
Lock off = 1000000

Valid Values: 
[1 0] 

Problem Values: 
[0 1]


Invalid Values: 
[0 0]

একটি = [ফাইল, ক্রিয়া], বি = [ফাইল 2, ক্রিয়া 2], সি = লক হিসাবে ইনপুট

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.