কেক কাটার প্রতিযোগিতা


37

এটি আমার 17 তম জন্মদিন এবং আপনি আমার পার্টিতে আমন্ত্রিত!

এবং পার্টিতে সর্বদা হিসাবে, কেক থাকবে।

একটি পিষ্টক ...

এবং আপনার এটি যতটা সম্ভব দরকার।

যেহেতু এটি একটি সুষ্ঠু পার্টি, আমাদের প্রত্যেকেই বলবে যে আমার কেকটি আমরা কত চাই এবং যে ব্যক্তি স্বল্পতম পরিমাণ বলেছিল সে এটি পাবে। তারপরে কেক না যাওয়া পর্যন্ত বাকি সবাই প্রক্রিয়াটি পুনরাবৃত্তি করতে পারে।

চ্যালেঞ্জ

  • total-degrees degrees-left total-people people-leftস্ট্যান্ডার্ড আউটপুট থেকে আউটপুট আকারে কমান্ড লাইন আর্গুমেন্টের মাধ্যমে ইনপুট দেওয়া হয়েছে integer-bid-in-degrees
  • আপনার বিড যদি সর্বনিম্ন হয় তবে আপনি সেই পরিমাণ পিঠা পান এবং রাউন্ডের বাইরে চলে যান।
  • যদি আপনার বিডটি সর্বনিম্ন না হয়, তবে আপনার বট বাকী কেকের উপর বিড করে।
  • সর্বনিম্ন বিড একই ক্ষেত্রে, সরানো ব্যক্তি এলোমেলোভাবে বেছে নেওয়া হবে।
  • একটি রাউন্ড শেষে, একবার সমস্ত কেক শেষ হয়ে যায় বা এর উপর কোন বিড দেওয়ার মতো কেউ নেই, সবচেয়ে বেশি কেকযুক্ত ব্যক্তিটি জিতে যায়!
  • রাউন্ডের শেষে এবং দু'জনের মধ্যে একই আকারের বৃহত্তম স্লাইস থাকে, বিজয়ী অঙ্কন এন্ট্রিগুলি থেকে এলোমেলোভাবে বেছে নেওয়া হয়।

গেমপ্লের

  • 17 টি রাউন্ড থাকবে, সামগ্রিক বিজয়ী সামগ্রিকভাবে সবচেয়ে বেশি জয় নিয়ে প্রবেশ করবে।
  • ড্রয়ের ক্ষেত্রে, স্পষ্ট বিজয়ী না হওয়া পর্যন্ত রাউন্ডগুলি খেলানো হবে।
  • প্রতিদিন, আমি বর্তমান স্কোরগুলি আপডেট করব যাতে লোকেরা তাদের এন্ট্রি আপগ্রেড করতে পারে।

নমন

আপনার হিসাবে আপনার এন্ট্রি লিখতে হবে

বট নাম, ভাষা

Insert
Code
Here

ব্যাখ্যা / এলোমেলো জিনিস এখানে

যদি আপনার এন্ট্রি এইভাবে ফর্ম্যাট করা না হয় তবে নিয়ামক আপনার প্রবেশটি চালাতে সক্ষম হবেন না। যদি আমি মনে করি এটি আপনার প্রবেশের ক্ষেত্রে ঘটেছে তবে আমি আপনাকে একটি মন্তব্যে অবহিত করব এবং / অথবা উত্তরটি সঠিক বিন্যাসে সম্পাদনা করব।

আপনার প্রবেশ এবং ফাইল স্টোরেজ

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

ফলাফল:

মেকের প্রতিযোগিতা জিতেছে! ভাল হয়েছে @ ক্যাবি 407

এবং এখন কিছু এলোমেলো পরিসংখ্যানের জন্য:

প্রতিটি বট পজিশনের একটি তালিকা এলো: (এই তালিকায় উপস্থিত যে কোনও বটকে ভালভাবে সম্পন্ন করা হয়েছে, আপনি অন্তত একবার শীর্ষস্থানীয় 5 এ এসেছেন!)

  1. মীক, মীক, Eidদ্যাটিক, Eidদ্যাটিক, মীক, Eidদ্যাটিক, Eidদ্যাটিক, মিক, মীক, মীক, সসেসি, মেক, গিমেথেকেক, গিমেথেকেক, গিমেথেকেক, মীন, Eidদ্যাটিক

  2. Eidদ্যাটিক, Eidদ্যাটিক, মীক, আলকেকসার্ফার, Eidদ্যাটিক, আলকেকসার্ফার, মীক, মাইফায়ারপ্লাসাথির্ড, Eidদ্যাটিক, Eidদ্যাটিক, eticদ্যাটিক, Eidদ্যাটিক, মাইফায়ারপ্লাসাথির্ড, মাইফায়ারপ্লাসাথার্ড, মীক, মাইফায়ারপ্লাসাথার্ড, আলকেকসার্ফার

  3. রিইলিথেক, আলকেকসার্ফার, আলকেকসার্ফার, মীক, আলকেকসুরফার, মেক, আলকেকসার্ফার, আলকেকসুরফার, রিইলিথেক, আলকেকসার্ফার, মীক, মাইফায়ারপ্লাসাথার্ড, Eidদ্যাটিক, Eidদ্যাটিক, Eidদ্যাটিক, রিলিটেকেক

  4. আলকেকসার্ফার, রিয়েলিথেকেক, মাইফায়ারপ্লাসাথির্ড, মাইফায়ারপ্লাসাথির্ড, মাইফায়ারপ্লাসাথির্ড, মাইফায়ারপ্লাসাথির্ড, মাইফায়ারপ্লাসাথির্ড, Eidদ্যাটিক, আলকেকসার্ফার, মাইফায়ারপ্লাসাথির্ড, মাইফায়ারপ্লাসাথার্ড, রিলিনকুইশার, রিলিনকুইশার, বিলিনকিয়ার

  5. বিল, মাইফায়ারপ্লাসাথার্ড, বিল, বিল, বিল, বিল, রিলিনকুইশার, রিইনকুইশার, মাইফায়ারপ্লাসাথির্ড, রিলিনকুইসার, বিল, রিলেথেক, বিল, অলিটল অফফটপ, অলিটল অফফটপ, বিল, বিল

থাকাকালীন চলমান cometition জন্য পূর্ণ লগ ফাইল খুঁজে পাওয়া যেতে পারে এখানে । পার্টওয়ে দিয়ে ফর্ম্যাট পরিবর্তনের জন্য দুঃখিত।

আমি আবার প্রতিযোগিতাটি পরিচালনা করব না, আপনি যদি আরও এন্ট্রি পোস্ট করতে চান তবে আপনাকে স্বাগত জানাই, এই প্রতিযোগিতার জন্য আমার গিথুব রেপোতে নিয়ামকটি পাওয়া যাবে ।


10
আমি বাইরের ঘেরের চারপাশে একটি রিং কাটানোর অনুরোধ করছি। প্রযুক্তিগতভাবে 0 ডিগ্রি (শেষ হয়ে গেলে কেকের এখনও 360 ডিগ্রি থাকে) এবং আমি সমস্ত পাশের আইসিংটি পাই।
র্যান্ডম 832

10
শুভ জন্মদিন :)
TheNumberOne

2
কারও আগ্রহী যদি এক রাউন্ডের জন্য ফলাফল {u'StatelyImitator': 719, u'Dieter': 4, u'Reallythecake': 0, u'Greedy': 0, u'Meek': 2, u'FlamingChainsaw': 0, u'Slim': 0, u'CharityBot': 0, u'Gentleman': 297, u'ALittleOffTheTop': 256, u'EatThe\u03c0': 0, u'Pig': 0, u'CakeEater': 330, u'BobBarker': 0, u'FloorBot': 5, u'Fatbot5000': 296, u'Moses': 360, u'Magician': 720, u'Hungry': 257, u'Imitator': 354} [u'Magician'],। যদি আপনার বটের স্কোর 0 থাকে তবে এটি কিছু ভুল করছে।
নীল

3
আরও পাঠক-বান্ধব পদ্ধতিতে লিডারবোর্ডটি ফর্ম্যাট করুন।
সুপারজেডি ২৪

2
@ মুডিফিশ গ্রেডিয়ান? অনেক বেশি কেকিয়ানদের মতো, তাই না?
জানুয়ারি

উত্তর:


5

নম্র, অজস্র

BEGIN{srand();print int(rand()>=.5?ARGV[2]/2.89:ARGV[1]/10-rand()*13)}

আমি এটি একবারে অনুকরণে দেখেছি।


একটি উপভোগ করুন, আপনার বটের কাজটি ভালই করছে = ও
জানুয়ারি

ধন্যবাদ। আচ্ছা এটা কোন কাকতালীয় ঘটনা নয়। আমি আসলে কন্ট্রোলারটি নিজে চালাতাম, একটি স্মার্ট বট লেখার চেষ্টা করছিলাম। তবে বেশিরভাগ সময় এটি সবচেয়ে সহজ বট দ্বারা পরাজিত হয়েছিল। সুতরাং আমি একটি দুর্দান্ত সরল কৌশল ব্যবহার করে শেষ করেছি, যা বেশিরভাগ সময় এলোমেলো আকারের কেকের সাথে জিতেছে।
ক্যাবি 407

13

যাদুকর, জাভা

public class Magician{
    public static void main(String[] args){
        System.out.println(720);
    }
}

720 নম্বরটি মায়াবী।

এই হয় নিয়ামক পরীক্ষা করার জন্য অভিপ্রেত ছিল এবং না একটি গুরুতর এন্ট্রি।


3
আমি মনে করি যে এখানে মূলত এখানে 720 এর স্কোর সহ এটি মূলত প্রতিযোগিতাটি জিতেছিল ।
PhiNotPi

10

স্লিম, পাইথন 2

print 0

এই বট একটি ডায়েট উপর।


10

স্যাডবট :(, সি ++

#include<iostream>
#include<cstdlib>
#include<stdlib.h>
int main(int argc, char**argv) 
{
    if (argc!=5){std::cout<<"Incorrect number of arguments";return 1;}
    double list[4];

    list[0]= atof(argv[1]); // total Degrees
    list[1]= atof(argv[2]); // degrees left
    list[2]= atof(argv[3]); // total people
    list[3]= atof(argv[4]); // people left


    std::cout<<list[1]/list[3]; // degrees left/ people left

    return 0;
}

পূর্বে ফেয়ারবট

ফেয়ারবট কেবল একটি সমান অংশ চায় :(

তিনি অংশগ্রহণকারীদের মধ্যে সমানভাবে কেক বিভক্ত করতে চান।

(তিনি অন্যান্য বটগুলি পুরোপুরি প্রত্যাশা করেছেন যে তিনি তাকে ছিঁড়ে ফেলবেন যদিও তিনি জানেন যে তারা বুঝতে পারছেন)

(সত্যিই পছন্দ করুন He তিনি একাকী, তিনি চান অন্য বটগুলিও তাকে পছন্দ করে)

(তিনি কেবল খারাপ সম্পর্ক থেকে বেরিয়ে এসেছেন এবং সত্যিই রুক্ষ প্যাঁচের মধ্য দিয়ে যাচ্ছেন, আপনি যদি তার পিছনে একটি থাপ্পর দিতে পারেন এবং তাকে আরও ভাল অনুভব করার জন্য একটি হাসি দিতে পারেন তবে এটি সত্যই অনেক অর্থ হতে পারে))

সম্পাদনা পরিবর্তিত থেকে argv হয় / C পরিবর্তে stdin ইনপুট নিতে প্রোগ্রাম (ন্যায্য বট এখনও দুঃখজনক .... তিনি (sadbot তার নাম পরিবর্তন করতে যা ধরণ চায় কেন তিনি পিষ্টক চায়))


আপনি এটি তৈরি করতে পারেন যাতে এটি স্ট্ডিনের চেয়ে আরগভ থেকে আরোগুলি নেয়?
নীল

আপনি যেমন আদেশ করেছেন ঠিক তেমনই হয়েছে।
লিয়াম

1
আপনি চাইলে আপনার নাম স্যাডবোটে রাখতে পারেন।
নীল

এছাড়াও, বন্ধনীগুলি কোড ব্লকের ভিতরে রাখতে হবে
ব্লু

1
এবং তাই তিনি একটি দু: খজনক বট।
লিয়াম

9

হালভার, রুবি

def halver(total_degrees, degrees_left, total_people, people_left)

  if people_left == 1
    degrees_left
  else
    degrees_left/2 - 1 
  end

end

p halver(*ARGV.map(&:to_i))

অবিচ্ছিন্নভাবে, অদম্য মেলা। আমার জন্য অর্ধেক কেক, অন্য সবার জন্য অর্ধেক কেক।


8

চ্যারিটিবট, পাইথন 2

print -360

মিশ্রণে আরও একটি কেক যুক্ত করুন!

(কন্ট্রোলার এটিকে 0 টি পিষ্টকের অনুরোধ হিসাবে দেখবে, আসলে কেকের আকারে যুক্ত করবে না)


7

রাষ্ট্রীয়ভাবে অনুকরণকারী, রুবি

def stately_imitator(total_degrees, degrees_left, total_people, people_left)

  current_winner_path = './data/current_winner'
  previous_cake_path = './data/previous_cake'

  first_move = (total_people == people_left)

  current_winner = first_move ? 0 : File.read(current_winner_path).to_i
  previous_cake = first_move ? total_degrees : File.read(previous_cake_path).to_i

  last_slice = previous_cake - degrees_left
  current_winner = [current_winner, last_slice].max

  File.open(previous_cake_path, 'w') { |f| f.puts(degrees_left)   }
  File.open(current_winner_path, 'w'){ |f| f.puts(current_winner) }

  if first_move
    degrees_left / 2
  else
    average_left = degrees_left.fdiv(people_left).ceil
    bid = [average_left, current_winner+1].max
    [bid, degrees_left].min
  end

end

p stately_imitator(*ARGV.map(&:to_i))

ইমিটেটরের বৈকল্পিক (যদি আপনি প্রতি খেলোয়াড়ের পরিবর্তে কেবল একটি প্রবেশিকা চান তবে এটি সেইটিকে ছাড়িয়ে যায় )। ইতিমধ্যে নেওয়া বৃহত্তম স্লাইসের সুনির্দিষ্ট ট্র্যাক রাখে এবং সর্বদা এই স্লাইসটি মারার জন্য যথেষ্ট বিড দেয়। এর অবশিষ্ট অংশের ন্যায্য অংশের চেয়ে কম বিডও করবে না। একটি পঠিত / লেখার যোগ্য './data' ডিরেক্টরি ইতিমধ্যে বিদ্যমান বলে ধরে নিয়েছে; ফাইলগুলি হয় ইতিমধ্যে নাও থাকতে পারে।


আপনি যদি খেয়াল না করেন তবে আমারও একাধিক উত্তর রয়েছে (তবে এর মধ্যে
ব্লু

ভাল খবর এবং খারাপ আছে। খারাপ - এমন কিছু আছে যা আপনার কনফিগার ফাইলগুলিকে পরিবর্তন করে। ভাল - আপনার বটটি আরও ভাল করে! ৫০৫/3600০০, আমি জিতলাম তা শেষ রাউন্ডে!
নীল

6

ডিয়েটার, জাভা

public class Dieter {
    public static void main(String... args){
        System.out.println("4");
    }
}

এটি খুব বেশি কেকের জন্য বিড দিতে চায় না, তাই এটি একটি ছোট তবে গ্যারান্টিযুক্ত র্যান্ডম স্লাইসটি বেছে নেয় ।


1
আপনি যদি আমার পোস্টগুলিকে হ্রাস করেন তবে কেন তা ব্যাখ্যা করুন। নাহলে আমি কখনই উন্নতি করতে পারি না!
ডানক্মেমস

18
উহু. আমি কেবল ধরে নিয়েছি আপনি অনুমান করতে পেরেছিলেন যে ডাউনটোটটি হ'ল কারণ এটি হ'ল / ভোটের জন্য আপনি কেবল নির্লজ্জভাবে এক্স কেসিডি রেফ ব্যবহার করছেন, এটি সম্ভবত একক খেলায় কখনই জিতবে না বলে যত্নশীল নয়।
জিওবিটস

3
আমাদের কাছে জাল র্যান্ডম সংখ্যার ব্যবহারকে সম্বোধন করার একটি মানক লুফোল রয়েছে (যাতে এই নির্দিষ্ট এক্সকেসিডি স্পষ্টভাবে উল্লেখ করা হয়)। যেহেতু চ্যালেঞ্জটির জন্য সাবমিশনে এলোমেলোতার প্রয়োজন নেই , এটি অগত্যা লুপফোলের লঙ্ঘন নয়, তবে এখনও। ಠ_ಠ
অ্যালেক্স এ।

3
আমি এটি বুঝতে পারি, তবে তারপরে যদি কেউ আপনার "বোকামি কিছু" বঞ্চিত করে তবে অবাক হওয়ার চেষ্টা করবেন না ।
Geobits

2
বিনা মজাদার লোকদের লড়াই করার জন্য ভোট দিন
ববি

5

জ্বলন্ত চেইনসো, জাভা

public class FlamingChainsaw
{
    public static void main(String[]args)
    {
        if(args.length<4){return;}
        if(Integer.parseInt(args[3])<3){System.out.println(0);}
        else{System.out.println(args[1]);}
    }
}

আপনি কি কখনও চেইনসো দিয়ে কেক কাটা প্রতিযোগিতা করার চেষ্টা করেছেন? ঠিক আছে, এখন আপনার আছে। এটা বরং বাধাদানকারী।


2
আমি দেখতে পেয়েছি যে আমি সাধারণত চেইনসো শব্দটি সুর করতে পারি তবে আপনি কেক কাটতে এটি ব্যবহার করার সময় নিশ্চয় কোনও গোলমাল হবে।
অ্যালেক্স এ।

3
মোমবাতি জ্বালানোর এটি একটি বহিরাগত উপায়।
TheNumberOne

5

ভদ্রলোক, জাভা

import static java.lang.Integer.parseInt;
import java.io.*;
import java.util.*;

public class Gentleman{
    private final static String FILE_NAME = "data/Gentleman.txt";

    static {
        new File("data").mkdir();
    }

    public static void main(String[] args) throws Exception{
        int totalCake = parseInt(args[0]);
        int cakeLeft = parseInt(args[1]);
        int totalPeople = parseInt(args[2]);
        int peopleLeft = parseInt(args[3]);

        if (totalCake == cakeLeft){
            System.out.println(cakeLeft);
        } else {
            int previousCake = load();
            int cakeDiff = previousCake - cakeLeft;

            if (cakeDiff > optimal(previousCake, peopleLeft + 1)){
                System.out.println(peopleLeft == 1 ? cakeLeft : Math.min(cakeLeft, cakeDiff + 1));
            } else {
                System.out.println(cakeLeft);  //Hey, I might get lucky :)
            }
        }
        save(cakeLeft);
    }

    private static void save(int cake) throws Exception{
        PrintStream out = new PrintStream(FILE_NAME);
        out.print(cake);
    }

    private static int load() throws Exception{
        Scanner in = new Scanner(new File(FILE_NAME));
        return in.nextInt();
    }

    private static int optimal(int cake, int people){
        return (cake + people - 1) / people;
    }
}

তিনি কোনও কেক খাওয়ার আগে ন্যায্য ভাগ বা তার চেয়ে কম পরিমাণে খাবার খাওয়ার লোকদের জন্য অপেক্ষা করেন। লোভীদের অতিরিক্ত পিষ্টক পেতে রোধ করতে তিনি যতটা সম্ভব বড় অংশ নেন।


4

বব বার্কার, জাভা

public class BobBarker{
    public static void main(String[] args){
        System.out.println((int)Math.floor(Integer.parseInt(args[1]) * .84));
    }
}

এটি সম্ভবত পরে আরও চিন্তা-ভাবনা সমাধানের সাথে প্রতিস্থাপিত হতে চলেছে তবে আমি আগ্রহী এটি যদি কাজ করে তবে। এটি কেবলমাত্র যে কোনও বটগুলি চেষ্টা করে যা সর্বোচ্চ চেষ্টা করে এবং এটি পরিবর্তনের জন্য মূল্য ঠিক করা তাদের উত্তর চুরি করার সঠিক কৌশল to ক্রমবর্ধমান পূর্ণসংখ্যার বিয়োগের সাথে ক্রমবর্ধমান দিকে পরিচালিত হতে পারে, এটি ঝরঝরে be

সম্পাদনা: বর্ধন শুরু, ফ্লোরবটের বিরুদ্ধে কাউন্টার পোস্টিং


চ্যালেঞ্জের বিন্যাসের প্রয়োজনীয়তার সাথে মেলে আমি আপনার বিবরণটি নীচে নিয়ে গিয়েছি।
PhiNotPi

@ ফিলনটপি, উফস, সেই প্রয়োজনীয়তাটি ভুলে গিয়েছিল। এটি ঠিক করার জন্য ধন্যবাদ!
thefistopher


ঠিক আছে, উত্তর পার্সারটি প্রথম লাইনে এবং তারপরে প্রথম কোড ব্লকে দেখবে। এছাড়াও, args[1]বিয়োগ করার আগে আপনাকে কোনও ইনট এ রূপান্তর করতে হবে।
নীল

@ থিস্টিস্টোফার আপনাকে এখনও ইন রূপান্তর করতে হবে
ব্লু

4

Eidদ্যাটিক, পাইথন 2

import random, math, sys, json

total_degrees, degrees_left, total_people, people_left = map(int, sys.argv[1:])
#try:
#    inp_f = open("./data/Eidetic.json", "r")
#    out = json.load(inp_f)
#except (IOError, ValueError):
out = {"last_cake": 0,
           "runs": 0,
           "total_runs": 0,
           "total_rounds": 0,
           "training":  [[0.0], [0.0], [0.12903225806451613], [16.774193548387096], [400.83870967741933], [720.0], [995.8709677419355], [996.9437634408603], [997.6], [997.6], [997.6], [998.5991397849463], [996.6770967741936], [998.8122580645161], [1011.5467420570814], [1017.7717824448034], [1227.155465805062], [1280.7840603123318], [1435.8028540656974], [1553.3689822294023], [1793.5330640818527], [2299.178101402373], [3183.924709689701], [2231.666666666667], [2619.4789644012944], [1270.9288025889969], [741.2718446601941], [480.4757281553398], [122.66990291262135], [27.54736842105263]]}

#else: inp_f.close()

def write_out():
    out_f = open("./data/Eidetic.json", "w")
    out_f.write(json.dumps(out))
    out_f.close()

def get_last_winner(): # Find the bid of the last winner
    bid = out["last_cake"]
    return max(bid, degrees_left) - degrees_left

def train():
#    print degrees_left # If you get that much, your probably safe.
#    sys.stderr.write("\nEidetic - Training len %s, no runs: %s, no_rounds: %s, last winner: %s\n"%(len(out["training"]), out["runs"], out["total_rounds"], get_last_winner()))
    if len(out["training"]) <= out["runs"]: out["training"].append([])
    out["training"][out["runs"]].append(get_last_winner())

def get_best_round():
    data = out["training"][out["runs"]+1:]
    mean = [sum(i)/(float(len(i)) or 1) for i in data]
    bid = max(mean+[0]) - 0.5
    sys.stderr.write("\nEidetic - mean %s\n"%mean)
    return bid

def main():
    reset = total_people == people_left
    if reset:
        out["total_rounds"] += 1
        out["runs"] = 0
    train()
    bid = get_best_round()
    print bid
#    sys.stderr.write('\nEidetic Bid: '+str(bid)+'\n')
    out["total_runs"] += 1
    out["runs"] += 1
    out["last_cake"] = degrees_left
    write_out()

main()

আমি এটাকে কিছুটা প্রশিক্ষণের জন্য কন্ট্রোলারে কয়েকবার চালিয়েছি, প্রতিটি রাউন্ডে জিততে হবে এমন বিডের কথা মনে আছে এবং তারপরে একবার প্রশিক্ষণ নিলে এটি বাস্তব জগতে চলে যায় এবং বাকীগুলির সাথে ভোট দেয়।


এটি করার একটি চতুর উপায়; আপনি এখন প্যাক এগিয়ে। আমি অবাক হই যদিও এটি এখনও এক-
চূড়ান্তভাবে

3

আলকেকবট, পাইথন

import sys, math

total_degrees, degrees_left, total_people, people_left = map(int, sys.argv[1:])

fraction_left = (degrees_left + 0.0)/ total_degrees
fraction_gone = 1.0 - fraction_left

factor = (math.sin(fraction_gone * math.pi / 2.0))**2
fraction = (factor/2.0) + 0.5

if total_degrees == degrees_left:
   print(int(math.floor(total_degrees/2.0) - 1))
else:
   print(int(math.floor(degrees_left * fraction)))

এটি আমার প্রথম পিসিজি পোস্ট; আমি আশা করি এটি উদ্দেশ্য হিসাবে কাজ করে ...

আমি কেক ভালবাসি. কোন ধরণের ব্যাপার না। আমার সহকর্মীরা জানেন। এবং তাই আমার বট না। যদি পুরো কেকটি এখনও সেখানে থাকে তবে অবিলম্বে সবচেয়ে বড় টুকরোটি পাওয়ার আশায় তিনি এর অর্ধেকের নিচে বিড করবেন। যদি তা না হয় তবে তাকে অর্ধেক বাকি কেক এবং বাকি সমস্ত কেকের মধ্যে কিছু দেওয়ার জন্য, একটি ওজনযুক্ত ফাংশন হিসাবে স্কোয়ার সাইন ব্যবহার করে ( ½ + sin² (fraction gone) / 2) বলা উচিত। যুক্তিটি হ'ল গেমের প্রথম দিকে সামগ্রিক বৃহত্তর (তবে ভগ্নাংশের চেয়ে ছোট) টুকরো টুকরো করার সুযোগ থাকা উচিত এবং দেরী হওয়া খেলায় ভদ্রলোক হওয়ার চেষ্টা করার ক্ষেত্রে সামান্যতম ব্যর্থতাও রয়েছে।

যেহেতু আমি প্রোগ্রামিংয়ে খুব বেশি আছি না, তাই আমি যে কোনও ত্রুটিযুক্ত নির্দেশিত প্রশংসা করব। এবার কিছু কেক খাই = ডি


3

স্যুসি, রুবি

def saucy(total_degrees, degrees_left, total_people, people_left)

  current_winner_path = './data/saucy_current_winner'
  previous_cake_path = './data/saucy_previous_cake'

  first_move = (total_people == people_left)

  current_winner = first_move ? 0 : File.read(current_winner_path).to_i
  previous_cake = first_move ? total_degrees : File.read(previous_cake_path).to_i

  last_slice = previous_cake - degrees_left
  current_winner = [current_winner, last_slice].max

  File.open(previous_cake_path, 'w') { |f| f.puts(degrees_left)   }
  File.open(current_winner_path, 'w'){ |f| f.puts(current_winner) }

  if first_move
    degrees_left
  else
    average_left = degrees_left.fdiv(people_left).ceil
    beats_past_players = current_winner + 1
    beats_future_players = degrees_left/4 - people_left**2
    [average_left, beats_past_players, beats_future_players].max
  end

end

p saucy(*ARGV.map(&:to_i))

সৌসি বাকি কেকের অর্ধেকের চেয়ে কিছুটা কম স্বীকার করতে ইচ্ছুক, যতক্ষণ না এটি অন্য কারও চেয়ে বেশি পেয়েছে বা পেতে পারে (সিক্রেট সসের ভিত্তিতে)।


3

কফি জাঙ্কি, কফিস্ক্রিপ্ট

#!/usr/bin/env node

# Require node fs
fs = require("fs")

# Happy birthday ;)
CAKECONSTANT = Math.round("""
                 /
               ,( ),
                 Y
                |-|
                | |
       _..--''''| |''''--.._
     .'   @_/-//-//>/>'/ @  '.
    (  @  /_<//<'/----------^-)
    |'._  @     //|###########|
    |~  ''--..@|',|}}}}}}}}}}}|
    |  ~   ~   |/ |###########|
    | ~~  ~   ~|./|{{{{{{{{{{{|
     '._ ~ ~ ~ |,/`````````````
        ''--.~.|/

""".length / 250 + Math.random())

# Some constants
OLD = "./data/CoffeeJunkie_oldcake.txt"
NEW = "./data/CoffeeJunkie_newcake.txt"

# How much cake do I want?
wantCake = (total_c, rest_c, total_p, rest_p) ->
    round = total_p - rest_p
    fairness = rest_c // rest_p

    switchMemory() if round is 0

    fairest_round = tryToRemember(total_p)
    tryToMemorize(fairness)

    if round >= fairest_round then fairness - CAKECONSTANT else total_c // 2

# Ok I should try to remember the last cake...
switchMemory = () ->
    try
        fs.renameSync(NEW, OLD)
    catch error

# What happend with the last cake?
tryToRemember = (rounds) ->
    try
        last_cake = fs.readFileSync(OLD, "utf-8")
        last_cake.trim().split(" ").map(
            (i) -> parseInt(i)
        ).reduce(
            (x, y, z, li) -> if y > li[x] then z else x
            0
        )
    catch error
        rounds / 2

# Watch what happens!
tryToMemorize = (fairness) ->
    try
        fs.appendFileSync(NEW, " " + fairness)
    catch error

# Coffee is ready, so... GO!
console.log(wantCake(process.argv[2..]...))

ভাল কাপ কফি ছাড়া একটি পিষ্টক আসলে কি?

কফি জাঙ্কি কফির টুকরোর চেয়ে কফি পছন্দ করে তবে তবুও কিছু চেষ্টা করতে চায়। তিনি সর্বদা অন্যান্য অংশগ্রহণকারীদের সাথে ন্যায়বিচার করবেন এবং শেষ কেকের কী হয়েছিল তা মনে করার চেষ্টা করবেন। তবে তার অতিরিক্ত কফির গ্রহণ তার স্মৃতি দুর্বল করেছে ...


আপনি কি ভাষাটির নামকরণ করতে পারবেন নোড.জেএস এর কফিসিপিতে?
নীল

সম্পন্ন হয়েছে, যদিও চালাতে এবং ইনস্টল করতে আপনার নোড.জেএস প্রয়োজন:npm install -g coffee-script; coffee CoffeeJunkie.coffee
সিফার

আপনি কি নিশ্চিত যে এটি আপনার কেকের একটি মোমবাতি? এটি দেখতে আরও কিছুটা ... ফালিক: ডি
বিটা ডিকায়

@ বেটাডেখে ... আরও ভাল? : ডি
সিফার

@ সিফার এটি ভাল: ডি
বিটা

2

রাষ্ট্রীয়ভাবে নাশকতা, রুবি

def stately_sabotage(total_degrees, degrees_left, total_people, people_left)

  current_winner_path1 = './data/current_winner'
  previous_cake_path1 = './data/previous_cake'
  current_winner_path2 = './data/statelysabotage-current_winner'
  previous_cake_path2 = './data/statelysabotage-previous_cake'

  first_move = (total_people == people_left)

  current_winner = first_move ? 0 : File.read(current_winner_path2).to_i
  previous_cake = first_move ? total_degrees : File.read(previous_cake_path2).to_i

  last_slice = previous_cake - degrees_left
  current_winner = [current_winner, last_slice].max

  File.open(previous_cake_path2, 'w') { |f| f.puts(degrees_left)   }
  File.open(previous_cake_path1, 'w') { |f| f.puts(total_degrees) }
  File.open(current_winner_path1, 'w'){ |f| f.puts(current_winner) }
  File.open(current_winner_path2, 'w'){ |f| f.puts(1) }

  if first_move
    (degrees_left / 2) - 1
  else
    average_left = degrees_left.fdiv(people_left).ceil
    bid = [average_left, current_winner+1].max
    [bid, degrees_left].min
  end

end

p stately_sabotage(*ARGV.map(&:to_i))

এর অর্থ এই ফর্ম্যাটে প্রদর্শিত হয়নি এমন অন্য ফাইলগুলি আপনাকে ওভাররাইট করার অনুমতি দেওয়া হয়েছে। আপনার ইচ্ছাকৃতভাবে এটি করা উচিত নয়, দয়া করে খেলাধুলা করুন।

এই বট সিদ্ধান্ত নিয়েছে যে প্রতিযোগিতা দূর করার জন্য, এটি খেলাধুলা করা উচিত নয়।

এটি স্টেটলি ইমিটেটরের একটি ক্লোন, এ ব্যতীত এটি স্টেটলি ইমিটেটরের দৃistence়তা ফাইলগুলি (যেহেতু তারা বট নামের সাথে উপস্থাপিত হয় না) গণ্ডগোল করে যাতে এটি ভুল সিদ্ধান্ত নেয় এবং শেষটি নির্বাচিত হয়।


1
'আপনার ইচ্ছাকৃতভাবে এটি করা উচিত নয়' এই গণনা হয় না?
নীল

3
এ কারণেই আমাদের সুন্দর জিনিস থাকতে পারে না।
হিস্টোক্র্যাট

@ মুডিফিশ আমি এটি আরএফসি 2119 অর্থে নিয়েছি। "নির্দিষ্ট পরিস্থিতিতে গ্রহণযোগ্য বা এমনকি কার্যকর যখন কার্যকর পরিস্থিতিতেও বৈধ কারণ থাকতে পারে, তবে সম্পূর্ণ প্রভাবগুলি বোঝা উচিত"
রিকিং

2

ব্যবসায়ী, আর

args <- sapply(commandArgs(TRUE),as.integer)
fraction <- args[2]/args[4]
if(args[3]==args[4]){
    cat(fraction, "\n", file="data/trader.txt")
}else{
    cat(fraction, "\n", file="data/trader.txt", append=TRUE)
}
history <- scan(file="data/trader.txt", quiet=TRUE)
if(tail(history,1) != max(history)){
    cat(floor(fraction)-1)
    }else{
        cat(args[2])
        }

মানুষের বাম অনুপাতের বাম ডিগ্রিগুলির বিবর্তনের খোঁজ রাখে এবং যখন সেই অনুপাত কমতে শুরু করে, এটি যুক্তিসঙ্গতভাবে ন্যায্য টুকরো জন্য জিজ্ঞাসা করে, অন্যথায় পুরো বাকী কেকের জন্য জিজ্ঞাসা করে। ব্যবহার করে আহ্বান জানানো হয়েছে Rscript trader.r total-degrees degrees-left total-people people-left


2

আইডব্লিউএমবিআইসিবিআইটি, পাইথন

import sys

degreesleft = int(sys.argv[2])
peopleleft = int(sys.argv[4])

print(round(degreesleft/peopleleft))

আইডব্লিউএমবিআইবিআইবিআইটি (এটি আমার জন্মদিন ছিল এবং আমি কান্নাকাটি করতে চেয়েছিলাম কারণ) ধরে নিয়েছে যে ডিগ্রি বাম এবং মানুষের সংখ্যা বামের মধ্যে সম্পর্ক রয়েছে। আসুন আশা করি এটি কাজ করে!

সমস্ত পাইথনে কাজ করা উচিত।

সম্পাদনা:

sys.argvইনপুট সংরক্ষণ করা কিছুটা অপব্যয়ী ছিল ...


এটি হওয়া উচিত degreesleft = int(inputs[2]); peopleleft = int(inputs[4])এবং এটি সর্বদা 1 টিতে বিড করা হয়
ব্লু

@ মুডিফিশ সম্পাদিত
বিটা


2

বিল, পাইথন 2

import sys
t,r,p,s=map(int,sys.argv[1:])
print(t-ord('d')*4)/(ord('\n')+ord('\t'))

একটি ফর্সা বাজি।


2

আলকেকসুরফার, পাইথন

import sys, math

total_degrees, degrees_left, total_people, people_left = map(int, sys.argv[1:])

fraction_left = (degrees_left + 0.0)/ total_degrees
fraction_gone = 1.0 - fraction_left
fair_share = fraction_left/people_left
modified_fair_share = fair_share + 0.05

weighting = 0.5 * fraction_gone + 0.5 - modified_fair_share
surfing = (math.cos(fraction_gone * math.pi))**2

print(int(math.floor((weighting * surfing + modified_fair_share)* total_degrees)))

যেহেতু AlCakeBot খুব খারাপভাবে করেছে (এবং আমি তাকে প্রতিযোগিতায় আরও খারাপ করার প্রত্যাশা করি) এখানে আমার দ্বিতীয় প্রবেশ রয়েছে। আমি তাকে সার্ফার বলেছিলাম , কারণ তার খুব সুন্দর আপ-ডাউন ওয়েভ ফাংশন রয়েছে যা তাকে সার্ফারের মতো অনুভব করে।

নীতিগতভাবে, তিনি অনুসারে বিড করেন cos² (x * pi), xকেকের ভগ্নাংশ কোথায় নেওয়া হয়েছে। এই সার্ফিং তরঙ্গটি একটি ওজনযুক্ত ফাংশন দিয়ে পরিবর্তিত হয়েছে যার ফলে তিনি কেকের অর্ধেকের চেয়ে কম অংশীদারি অংশের চেয়ে কম অংশে শুরু করতে পারেন, যখন অর্ধেক পিষ্টক চলে যায় তখন তার বিডগুলি প্রায় ন্যায্য অংশের উপরে পৌঁছে দেয় এবং তারপরে গতি বাড়িয়ে তোলে then পুরো কেকের জন্য পরে বিড করুন। বাকী কেক প্লাস ৫% (পুরো কেকের শতাংশ, অর্থাৎ) এর তুলনায় তিনি কখনই ন্যায্য অংশের চেয়ে কম বিড করবেন না।

মনে রাখবেন যে তারা ভাই হতে পারে, তবে তিনি যদি অ্যালকেকবটের চেয়ে উল্লেখযোগ্য পরিমাণে বড় টুকরো পেয়ে থাকেন তবে পরবর্তীকালে সেটির একটিও টুকরোটি পাওয়া যাচ্ছে না। তারা চকোলেট বা বিস্কুট শেয়ার করবে, তবে কেক নয়!


বাহ, আমি প্রথম রাউন্ডে ভাগ্যবান হয়েছি এবং অন্যরা তাদের বটগুলিকে অপ্টিমাইজ করার পরে এটি দ্রুত দক্ষিণে চলে যায় = ও
জানুয়ারি

1

ক্ষুধার্ত, জাভা

public class Hungry {
    public static void main(String[] args) {
        double[] arguments = new double[4];
        for (int i = 0; i < 4; i++) {
            arguments[i] = Double.parseDouble(args[i]);
        }
        int myCake = (int) Math.ceil(arguments[1]/arguments[3]);
        System.out.println(myCake);
    }
}

সর্বদা তার বাকি কেকের ন্যায্য অংশ চায়।


1

নকল, রুবি

def imitator(total_degrees, degrees_left, total_people, people_left)

  case people_left
  when total_people
    degrees_left - 5
  when 1
    degrees_left
  else
    average_already_won = (total_degrees - degrees_left).fdiv(total_people - people_left)
    average_left = degrees_left.fdiv(people_left)
    guess_for_current_winning_score = average_already_won * (1.25 ** (total_people - people_left - 1))
    bid = [average_left, guess_for_current_winning_score].max.ceil
    [bid, degrees_left].min
  end

end

p imitator(*ARGV.map(&:to_i))

লক্ষ্যটি হ'ল অন্য কারও চেয়ে বেশি কেক পাওয়া, আপনার কেককে সর্বোচ্চ নয়। সুতরাং, পূর্ববর্তী বটগুলি ইতিমধ্যে যা গ্রহণ করেছে তার তুলনায় এই বট কোনও স্থির হয়ে উঠবে না। (এই সংস্করণটি সেই পরীক্ষার জন্য হিউরিস্টিকস ব্যবহার করে, আমি কেবল লক্ষ্য করেছি যে আমাদের আসলে রাষ্ট্র বাঁচানোর অনুমতি দেওয়া হয়েছে যাতে আমি সম্ভবত একটি রাষ্ট্রীয় বৈকল্পিক পোস্ট করব)।


1

সত্যিই কেক, বাশ

#!/bin/bash
echo "$RANDOM 652 / $2 * 100 / $2 $4 / + p" | dc

এবং এখানে আসল কেকের একটি চিত্র রয়েছে।

আসল কেকের একটি ছবি


1

কেক ইটার, জাভা

public class CakeEater{
    public static void main(String[]args){
        int a=Integer.parseInt(args[1]),b=Integer.parseInt(args[2]),c=Integer.parseInt(args[3]);
        System.out.println((int)Math.min(a,((1.2+Math.random()*0.15)*a)/c));
    }
}

এটি কেক খায়। এটা সম্বন্ধে.


1

রিলিনকিউসার, জাভা

import static java.lang.Integer.parseInt;
public class Relinquisher {
    public static void main(String... args){
        int cakeLeft = parseInt(args[1]);
        int totalPeople = parseInt(args[2]);
        int peopleLeft = parseInt(args[3]);
        int answer = (int) Math.ceil(((peopleLeft + 10.0) * cakeLeft) / (totalPeople + 10.0));
        System.out.println((int) answer);
    }
}

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


প্রয়োজন একটি; গাণিতিক লাইনে
নীল

@ মুডিফিশ হুফ, ভেবেছিলাম আমি এটি আগে রেখে দিয়েছি। যে ইশারা জন্য ধন্যবাদ!
ইটিএইচ প্রডাকশনগুলি


ভেবেছি ইতিমধ্যে ...?
ইটিএইচ প্রডাকশনগুলি

পূর্বে ডাবল পাওয়া প্রয়োজন?
নীল

1

ALittleExtra, sh

#!/bin/sh
fair=$(expr $2 / $4)
myextra=$(expr $2 / $3)
want=$(expr $fair + $myextra)
echo $(($want<$2?$want:$2))

আমি কেবল আরও কিছুটা চাই, কেক কমার সাথে লোভও কম gets


1

মাইফায়ারপ্লাসাথার্ড, শি

#!/bin/sh
fair=$(expr $2 / $4)
myextra=$(expr $2 / 3)
want=$(expr $fair + $myextra)
echo $(($want<$2?$want:$2))

1

EatTheπ, Node.js

var π = Math.PI, e = Math.E;
var [totalπ, πLeft, totalPeople, peopleLeft] = process.argv.slice(2);
console.log(Math.min(totalπ * Date.now() * π % (πLeft * totalPeople / peopleLeft) % totalπ, πLeft / e * π, πLeft) | 0);

সত্যিই likes পছন্দ করে, এবং মনে হয় সেই পিষ্টকটি মানে হয় π।


তাহলে কেন এটি কেক খাচ্ছে? : পি
TheNumberOne

1
@ দি নাম্বারওন কারণ এটি অন্য কোনও কিছু খাওয়ানো হয় না :(
টুথব্রাশ

2
@ দি নাম্বারওন এখন এটি মনে হয় যে কেক is ... আপনি কেন এটি জিজ্ঞাসা করলেন?
টুথব্রাশ

কমান্ড স্ক্রিপ্ট থেকে পালানো উদ্ধৃতিগুলি সরিয়ে ফেলতে হয়েছিল var totalπ=process.argv[2], πLeft=process.argv[3], totalPeople=process.argv[4], peopleLeft=process.argv[5];এবং কন্ট্রোলারের সাথে এই কাজটি করার জন্য স্ক্রিপ্টের দ্বিতীয় লাইনটি পুনরায় লিখতে হয়েছিল । এটি 41 বটের ক্ষেত্রে 3600 এর মধ্যে 97 পেয়েছে।
ক্যাবি 407

1

লিটল অফ দ্য টপ, পাইথন 2

import math, sys

total_degrees, degrees_left, total_people, people_left = map(int, sys.argv[1:])

def get_equal_share(total_degrees, people):
  return int(math.ceil(total_degrees/float(people)))

def noms(total_degrees, degrees_left, people):
  bid = get_equal_share(total_degrees,people)-1
  return min(degrees_left, bid)

print noms(total_degrees, degrees_left, people_left)

যেহেতু "নিখুঁত" অ্যালগরিদম কটকে বটের মধ্যে সমানভাবে বিভক্ত করার চেষ্টা করে, আমরা এর চেয়ে কম স্লাইভ নেব। এমনকি পরবর্তী রাউন্ডগুলিতে সামগ্রিক কেকের সম্পূর্ণ ন্যায্য অংশের চাহিদা রয়েছে, তবে কত লোক বাকী রয়েছে তার উপর ভিত্তি করে এই সংখ্যাটি উপরের দিকে ফেলেছে

আমি পাইথনে দীর্ঘ সময় ধরে প্রোগ্রাম করি নি, তাই আমার কোডটি নষ্ট হয়ে গেছে কিনা তা আমাকে জানান ...

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