১০ হাজার খ্যাতি পাওয়ার জন্য অভিনন্দন!


19

@ মার্টিনব্যাটনার ঠিক ১০,০০০ খ্যাতি অর্জনের পরে , ব্যবহারকারীদের পৃষ্ঠাতে এখন আমাদের কাছে 10 ব্যবহারকারীর তিনটি পূর্ণ সারি রয়েছে ! এখন, যেহেতু আমরা এখানে সব প্রোগ্রামার রয়েছি তাই আমরা ম্যানুয়ালি না করে জিনিসগুলি স্বয়ংক্রিয় করতে পছন্দ করি। আপনার চ্যালেঞ্জটি হ'ল নতুন 10 কে ব্যবহারকারীদের অভিনন্দন জানাতে একটি প্রোগ্রাম লিখুন write

সবিস্তার বিবরণী

ইনপুট

ইনপুটটি nস্থান-বিচ্ছিন্ন সংখ্যার লাইন হবে । (যদি আপনি চান, আপনি স্পেস-বিভাজিত সংখ্যার একক কমা-বিচ্ছিন্ন তালিকাও নিতে পারেন, যদি এটি আপনার কোডকে আরও ছোট করে তোলে)) উদাহরণস্বরূপ:

10 20 30 40 50
15 25 35 45 55
20 30 40 50 60

বা:

10 20 30 40 50,15 25 35 45 55,20 30 40 50 60

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

আউটপুট

আউটপুটটি একই পরিমাণ nলাইন হবে (বা একই দৈর্ঘ্যের কমা-বিভাজিত তালিকা)। প্রতিটি লাইন / তালিকা আইটেম হবে:

  • :D যদি এমন কোনও ব্যবহারকারী থাকেন যার খ্যাতি সবেমাত্র> = 10,000 হয়ে গেছে।
    • একাধিক স্পেস-বিচ্ছিন্ন :Ds যদি সেখানে একাধিক ব্যবহারকারী রয়েছেন যারা 10,000 টি গণনা গণনা পূরণ করেছেন বা পাস করেছেন। উদাহরণস্বরূপ, :D :D :D3 নতুন 10 কে ব্যবহারকারীদের জন্য।
  • :( এবং তারপরে যদি ইনপুটটি অস্পষ্ট বা অসম্ভব হয়ে থাকে তবে পরবর্তী আউটপুটটি থামান (পরবর্তী বিভাগে এটি সম্পর্কে আরও)।
  • এই শর্তগুলির মধ্যে একটিও সত্য না হলে কিছুই নয়।

অস্পষ্টতা

এটা সম্ভব যে ইনপুটটি অস্পষ্ট। এই চ্যালেঞ্জের উদ্দেশ্যে, আমরা ধরে নিই যে:

  • চ্যালেঞ্জের স্বার্থে গ্রহণযোগ্যতা এবং অনুদান এবং এর মতো উপেক্ষা করে খ্যাতি ক্যাপটি প্রতিদিন 200 হয়।
  • ব্যবহারকারীরা খ্যাতি হারাতে পারেন না (আবার সরলতার জন্য এবং চ্যালেঞ্জের জন্য)।

ইনপুটটি অস্পষ্ট বিবেচনা করা হয় যখন কোন খ্যাতিমান মানটি ব্যবহারকারীর সাথে মিলিত হয় তা নির্ধারণ করা অসম্ভব। উদাহরণস্বরূপ, ইনপুটটিতে 10 20,30 40, আপনি 10-প্রতিনিধি ব্যবহারকারী 30-জন ব্যবহারকারী বা 40-প্রতিনিধি ব্যবহারকারী হয়েছিলেন কিনা তা বলতে পারবেন না।

ইনপুটটিকে অসম্ভব হিসাবে বিবেচনা করা হয় যখন একদিনের ব্যবহারকারীরা পরের দিন থেকে সম্ভবত ব্যবহারকারী হতে না পারত। উদাহরণস্বরূপ, ইনপুটটিতে 10 20,310 320, এই পরিস্থিতিটি স্পষ্টভাবে অসম্ভব কারণ ব্যবহারকারীরা এক দিনে 300 খ্যাতি অর্জন করতে পারতেন না। ব্যবহারকারীরা খ্যাতি হারাও অসম্ভব।

এজ মামলা

  • প্রাথমিক খ্যাতি মানগুলি যে কোনও কিছুতে শুরু করতে পারে (অর্থাত্ কোনও ব্যবহারকারী 1337 খ্যাতি দিয়ে শুরু করতে পারেন)।
  • প্রথম লাইন / তালিকা আইটেমের জন্য কোনও আউটপুট নেই।
  • ইনপুটটি সর্বদা সিনথেটিকভাবে বৈধ থাকবে, যার অর্থ খ্যাতি মানগুলি সর্বদা ইতিবাচক পূর্ণসংখ্যার হবে, সর্বদা লাইন / তালিকার আইটেম ইত্যাদিতে খ্যাতি মানের সমান পরিমাণ থাকবে etc.
  • সুনামের মানগুলি সাজানো হয় না; তারা যে কোনও ক্রমে হতে পারে।

পরীক্ষার মামলা

ইনপুট: 9900,10000
আউটপুট::D

ইনপুট: 9900 9950 9910,10100 9950 9910,10300 10150 10110
আউটপুট::D,:D :D

ইনপুট: 10 20 30,42 10 20,10 242 20,442 42 10,0 0 0,442 42 10
আউটপুট:,,,:(

ইনপুট: 10 20,15 25,15 25
আউটপুট:,,

ইনপুট: 9999 9998 9997,10000 9998 9997,10000 10000 9997,10300 10000 10000
আউটপুট::D,:D,:(

ইনপুট: 100,90,80,70
আউটপুট::(

ইনপুট: 10000 10000 10000 9999,10000 10000 10000 10000,10010 10020 10030 10040
আউটপুট::D,:(

ইনপুট: 9999 9998 9997 9996,10196 10197 10198 10199,10399 10199 10197 10196
আউটপুট::D :D :D :D,


@ মার্টিনবাটনার আহ, এটি লক্ষ্য করেনি। স্থির
দুরকনব

এই উদাহরণের প্রথম পদক্ষেপটিও অস্পষ্ট।
মার্টিন ইন্ডার

1
যেখানে উদাহরণ 4 অস্পষ্ট নয়।
মার্টিন এন্ডার

(i.e. a user can start with 1337 reputation).আমার এই কোজটি আমার পছন্দ ছিল ... ওয়েল 5 মিনিট আগে কেউ আমার উত্তরগুলির একটি উত্তর না বাড়িয়ে xD
তেউন প্রোঙ্ক

5 নং উদাহরণ, দ্বিতীয় ধাপটিও অস্পষ্ট (কোন 10k ব্যবহারকারী কোনটি?)। একই উদাহরণ 7 হিসাবে যায় (আপনি যদি কোনও বিধি না যোগ করেন যে সমান-প্রতিনিধিত্বকারী ব্যবহারকারীদের বিবেচনা অপ্রাসঙ্গিক, তবে আপনি কীভাবে জানবেন যে কোনও দিন তিনি কোন ব্যবহারকারী ছিলেন, যদি তিনি পরে অন্য কারও সাথে
জুটি

উত্তর:


12

রুবি, 209 বাইট

সম্পাদনা: আমি রুবিতে স্যুইচ করেছি যা এটি প্রায় 30% দ্বারা সংক্ষিপ্ত করে রেখেছিল। মূল গাণিতিক সংস্করণটির সম্পাদনা ইতিহাস দেখুন। আমি মনে করি যে প্রধান সঞ্চয়গুলি আসল permutationউপাদানগুলির পরিবর্তিত অবস্থানগুলিকে (যা আমাকে ম্যাথমেটিকাকে চালিত করতে হয়েছিল) উপেক্ষা না করে এসেছে from

এটি নিউলাইন-বিচ্ছিন্ন বিন্যাস ব্যবহার করে।

gets.split('
').map{|s|s.split.map &:to_i}.each_cons(2){|a,b|a.permutation.map{|q|q.zip(b).map{|x,y|y-x}}.reject{|d|d.any?{|x|x<0||x>200}}.size!=1?abort(':('):(puts':D '*(a.count{|d|d<1e4}-b.count{|d|d<1e4}))}

সংক্ষেপটি হ'ল:

  • একটানা জোড়া দিন দিন পান।
  • পূর্ববর্তী দিনের সমস্ত অনুমতি পান এবং বর্তমান দিন থেকে এগুলির প্রতিটি বিয়োগ করুন।
  • নেতিবাচক বা আরও বেশি 200 এর মধ্যে পার্থক্য রয়েছে এমন সমস্ত ফলাফল খনন করুন।
  • যদি বাকী অনুমানের সংখ্যা 1 না হয় তবে আউটপুট :(
  • অন্যথায়, :Dনতুন 10 কে ব্যবহারকারী হিসাবে আউটপুট ।
  • শেষে, প্রথম দিন পরে সমস্ত দিন ড্রপ :(

কম গল্ফ:

gets.split("\n").map{|s|
  s.split.map &:to_i
}.each_cons(2){|a,b|
  a.permutation.map{|q|
    q.zip(b).map{|x,y|
      y-x
    }
  }.reject{|d|
    d.any?{|x|
      x<0||x>200
    }
  }.size!=1 ? abort(':(') : (puts ':D '*(a.count{|d|d<1e4}-b.count{|d|d<1e4}))
}

আমি মনে করি এটি গণনার একটি সুন্দর চেইন। :)

পিএস: এটা কি আজব যে আমি এই প্রথম একটি উত্তর জমা দিয়েছিলাম?


8
আমি অদ্ভুত মনে করি না। কিছু আমাকে বলছে আপনার ঘরের মাঠের সুবিধা রয়েছে;)
ক্যালভিনের

সুতরাং এই প্রশ্নের উদাহরণে কিছু ব্যর্থ হবে, তাই না?
ক্রંચার

@ ক্রুনচার এটি অনুমান অনুসারে ভুল বলে মনে করে তাদের ব্যর্থ করবে (যেমন আমি মন্তব্যগুলিতে উল্লেখ করেছি)। যদি ডুরকনব উদাহরণগুলি ঠিক করার পরিবর্তে অনুমিত পরিবর্তন করার সিদ্ধান্ত নিয়েছে, আমার ধারণা আমি এটি পুনরায় কাজ করতে হবে।
মার্টিন ইন্ডার

@ মার্টিনবাটনার এটাই বুঝলাম। কেবলমাত্র নিশ্চিত করা হচ্ছে :)
ক্রুঙ্কার

6

হাস্কেল, 254 249 244 232 228

import Data.List
t=m(9999<)
p(a:b:r)=(a,b,r)%(filter(all(`elem`[0..200]))$nub$m(zipWith(-)b)$permutations a)
p _=""
(a,b,r)%(_:[])=(concat$m(const":D ")$t b\\t a)++'\n':p(b:r)
_%_=":("
m=map
main=interact$p.m(m read.words).lines

একটু ব্যাখ্যা: অ্যালগরিদম মার্টিনবাটনার ব্যবহারের সাথে অনেকটা মিল, nubআমি কিছু চিন্তাভাবনা ব্যয় করে। নোট নোটের তুলনায় n + 1 এ আরও কত খ্যাতিমান 10000 বা বড় হয় তা নির্ধারণের জন্য একটি তালিকার পার্থক্য ব্যবহৃত হয় t b\\t a

আমি চশমাগুলির ব্যাখ্যায় মার্টিনব্যাটনার এর সাথেও একমত এবং উপরোক্ত কয়েকটি উদাহরণ ভুল, এমনকি # 2 টিও ভুল (এমন হওয়া উচিত :() এমনটি পর্যন্ত ।


আপনার উপনাম করা উচিত নয় map?
গর্বিত হাস্কেলর

1
এটি ঠিক (2 বাইট সংরক্ষণ করা) তবে অন্য 10 বাইট zইনফিক্স তৈরি করে এবং প্রতিস্থাপনের replicate (length l) xমাধ্যমে সংরক্ষণ করা যায় map (const x) l। হাস্কেল কি দুর্দান্ত নয়?
দ্যস্পেনিশ ইনকিউজিশন

এটা নিশ্চিত যে. দুর্দান্ত গল্ফিং! যে নোট অন, কারণ ফাংশন আবেদন সর্বোচ্চ প্রাধান্য রয়েছে, আপনি কমান করতে সক্ষম হওয়া উচিত (t b)\\(t a)করতে t b\\t a, 4 আরো বাইট আউট golfing।
গর্বিত হাসেলেলার

এই জায়গাগুলির সন্ধানের জন্য যদি কিছু কোড থাকে তবে কোডগুলি স্বয়ংক্রিয়ভাবে সংক্ষিপ্ত করা যেতে পারে ... এটি একটি প্রকল্পের থেকে কিছুটা বড় বলে মনে হচ্ছে nice
গর্বিত হাস্কেলর

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