Terima kasih untuk semua entri, tenggat waktu telah berlalu dan skor akhir ada di akhir pertanyaan.
Selamat untuk PhiNotPi atas kemenangan yang cukup komprehensif.
Ini adalah raja-of-the-bukit tantangan, yang tujuannya adalah untuk menciptakan sebuah program yang menang lebih sering daripada lawan-lawannya di lelang tawaran terendah yang unik.
Memasukkan
Sebagai masukan, program akan menerima semua penawaran putaran sebelumnya, satu putaran per baris, semua penawaran dipisahkan dengan spasi sebagai berikut:
10 4 12 11 12 4 7 3 3
1 2 9 15 1 15 15 9 3
3 21 6 4 3 8 6 13 1
Setiap kolom input mewakili penawaran satu bot. Kolom pertama adalah tawaran program penerima, sedangkan sisanya dalam urutan yang dibuat secara acak. Terima kasih kepada hammar dan Peter Taylor untuk masukan mereka.
Input disediakan sebagai satu-satunya argumen baris perintah (multi-baris) untuk program Anda:
./test1 '1 2
3 4
5 6
1 2'
Ini berarti bahwa program Anda harus dapat dijalankan dari baris perintah. Tolong beri contoh doa sebagai bagian dari jawaban Anda.
Di babak pertama hanya sebagai sarana untuk memberi tahu Anda berapa banyak bot yang Anda hadapi, input akan berupa garis 0
s - satu untuk setiap bot.
Keluaran
Program Anda harus menampilkan penawarannya sebagai bilangan bulat dalam kisaran 1 hingga 100 (inklusif).
Program Pencetak Gol
Ini adalah program penilaian saya - saran untuk penambahan, perbaikan atau perbaikan bug akan disambut.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NUMROUNDS 10
#define NUMBOTS 4
#define MAXINPUTSIZE 10000
#define MAXFILENAMESIZE 100
int main()
{
int i,j,a,b,winner;
FILE *fp;
char bots[NUMBOTS][MAXFILENAMESIZE]={"onesconfident","random100","random20","random5"};
char openstring[MAXFILENAMESIZE+MAXINPUTSIZE+3];
char input[MAXINPUTSIZE];
char buff[5];
int shuffle[NUMBOTS],auction[100],lowestbid[NUMBOTS]={[0 ... NUMBOTS-1]=101};
static int guesses[NUMBOTS][NUMROUNDS];
static int scores[NUMBOTS],totalwinbids[NUMBOTS];
srand(time(NULL));
for(i=0;i<NUMROUNDS;i++)
{
/*blank the auction bids for the next round */
for(a=0;a<100;a++)
{
auction[a]=9999;
}
/*loop through the bots sending the input and storing their output */
for(j=0;j<NUMBOTS;j++)
{
/*Fisher-Yates shuffle */
for(b=0;b<NUMBOTS;b++)
{
shuffle[b]=(b+j)%NUMBOTS;/*put current bot at index 0 */
}
for(b=NUMBOTS-1;b>1;b--)
{
int z=rand()%(b-1)+1;/*make sure shuffle leaves index 0 alone */
int t=shuffle[b];
shuffle[b]=shuffle[z];
shuffle[z]=t;
}
/*generate the input for the bots */
strcpy(input,"'");
if(i==0)
{
for(b=0;b<NUMBOTS;b++)
{
if(b!=0)
sprintf(input,"%s 0",input);
else
sprintf(input,"%s0",input);
}
}
else
{
for(a=0;a<i;a++)
{
for(b=0;b<NUMBOTS;b++)
{
if(b!=0)
sprintf(input,"%s %d",input,guesses[shuffle[b]][a]);
else
sprintf(input,"%s%d",input,guesses[shuffle[b]][a]);
}
if(a!=i-1)
strcat(input,"\n");
}
}
strcat(input,"'");
sprintf(openstring,"%s %s",bots[j],input);
fp=popen(openstring,"r");
fgets(buff,3,fp);
fflush(NULL);
pclose(fp);
guesses[j][i]=atoi(buff);
/*add the bid to the auction, eliminating any duplicates */
if(auction[atoi(buff)-1]!=9999)
auction[atoi(buff)-1]=9998;
else
auction[atoi(buff)-1]=j;
}
winner=9999;
/*add one to the score of the winning bot */
for(a=0;a<100;a++)
{
if(auction[a]!=9998 && auction[a]!=9999)
{
winner=auction[a];
scores[winner]+=1;
totalwinbids[winner]+=guesses[winner][i];
if(guesses[winner][i]<lowestbid[winner])
lowestbid[winner]=guesses[winner][i];
break;
}
}
/*output this round's bids and the winning bot's name */
strcpy(input,"");
for(b=0;b<NUMBOTS;b++)
{
if(strcmp(input,"")!=0)
sprintf(input,"%s %d",input,guesses[b][i]);
else
sprintf(input,"%d",guesses[b][i]);
}
if(winner!=9999)
printf("%s %s\n",input,bots[winner]);
else
printf("%s No winner\n",input);
}
/*output final scores */
printf("\nResults:\n");
printf("Bot\tScore\tTotal\tLowest\n");
for(a=0;a<NUMBOTS;a++)
{
printf("%s\t%d\t%d\t%d\n",bots[a],scores[a],totalwinbids[a],lowestbid[a]);
}
return 0;
}
Pemain uji
Seseorang yang percaya diri Selalu menawar 1.
#include <stdio.h>
int main()
{
printf("1");
return 0;
}
Random100 Tawaran secara acak di seluruh rentang
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(getpid());
printf("%d",rand()%100+1);
return 0;
}
Random20 Tawaran secara acak antara 1 dan 20
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(getpid());
printf("%d",rand()%20+1);
return 0;
}
Random5 Tawaran secara acak antara 1 dan 5
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(getpid());
printf("%d",rand()%5+1);
return 0;
}
Contoh run-through:
1 38 5 2 onesconfident
1 66 13 5 onesconfident
1 94 1 3 random5
1 22 9 1 random20
1 50 17 4 onesconfident
1 78 5 2 onesconfident
1 6 13 5 onesconfident
1 34 1 3 random5
1 62 9 1 random20
1 90 17 4 onesconfident
Results:
Bot Score Total Lowest
onesconfident 6 6 1
random100 0 0 101
random20 2 18 9
random5 2 6 3
Para pemain ini hanya untuk tujuan pengujian. Mereka TIDAK akan dimasukkan dalam kompetisi. Anda dapat memasukkan bot sebanyak yang Anda inginkan, jadi jika ada yang memasukkan bot yang hanya menebak 1
, Anda bisa memasukkan bot lain yang melakukan hal yang sama untuk menjadikannya tidak berguna.
Pemenang
Bot yang menang di setiap putaran adalah yang memberikan penawaran unik terendah . Jadi diberikan ronde di mana tawaran berikut dibuat: 1 1 3 5 2 3 6 3 2 8 7
pemenang akan menjadi bot yang menawar 5
karena 1
s, 2
s dan 3
s tidak unik.
Pemenang kompetisi adalah program yang menang paling banyak setelah 100 putaran. Dalam kasus seri, total penawaran yang menang akan digunakan sebagai tie-breaker, dan jika itu juga menjadi tie, tawaran pemenang terendah akan digunakan sebagai tie-breaker lebih lanjut. Semua faktor penilaian ini adalah keluaran dari program penilaian.
Saya akan menjalankan program penilaian pada semua program kerja yang telah dimasukkan 2 minggu dari hari ini ( 18 Februari sekarang diperpanjang hingga 11 malam (GMT) pada 20 Februari ). Saya akan menghapus semua entri yang berfungsi dan menerima pemenang dari proses penilaian saya.
Menjalankan penilaian terakhir
1 9 3 2 1 6 4 3 6 8 7 10 26 6 10 5 26 2 5 8 8 5 7 6 42 1 ./phinotpi2
1 11 4 2 1 4 9 20 6 8 7 6 26 4 8 4 26 2 5 8 8 5 7 7 42 1 ./phinotpi2
1 7 9 2 1 4 3 20 6 8 7 6 7 4 8 9 26 2 5 8 8 5 4 9 42 3 node minitech1.js
1 13 20 2 1 3 3 20 6 8 7 7 9 6 8 20 26 2 5 8 8 5 9 9 42 3 ./dirichlet
1 12 13 2 1 1 3 20 6 8 7 7 9 6 9 13 26 2 5 8 8 5 20 9 42 3 ./dirichlet
1 2 4 2 1 1 3 20 6 8 7 7 9 6 9 12 26 2 5 8 8 5 13 9 42 3 python blazer1.py
1 11 4 2 1 4 3 20 6 8 7 6 7 4 8 4 26 2 5 8 8 5 12 9 42 3 ./celtschk
1 3 4 2 1 1 3 20 6 8 7 6 7 4 8 9 26 2 5 8 8 5 4 9 42 3 node minitech1.js
1 7 4 2 1 1 3 20 6 8 7 9 26 6 7 20 26 2 5 8 8 5 9 9 42 10 ./phinotpi2
1 9 9 2 1 3 4 20 6 8 7 6 7 3 9 3 26 2 5 8 8 5 20 9 42 10 ./phinotpi2
1 13 4 2 1 3 9 20 6 8 7 4 6 3 8 4 26 2 5 8 8 5 3 9 42 10 scala Schwarzenbeck
1 12 20 2 1 1 3 20 6 8 7 6 20 4 8 7 26 2 5 8 8 5 4 9 42 10 ./phinotpi2
1 10 3 2 1 2 4 20 6 8 7 6 9 3 9 3 26 2 5 8 8 5 7 9 42 10 ./phinotpi2
1 6 9 2 1 4 9 20 6 8 7 4 6 3 8 4 26 2 5 8 8 5 3 9 42 10 scala Schwarzenbeck
1 8 4 2 1 3 3 20 6 8 7 6 20 4 8 7 26 2 5 8 8 5 4 9 42 10 ./celtschk
1 2 13 2 1 3 3 20 6 8 7 9 20 6 8 9 26 2 5 8 8 5 7 9 42 10 ruby1.9 strategist.rb
1 2 4 2 1 3 3 20 6 8 7 7 10 6 9 10 26 2 5 8 8 5 9 9 42 10 python blazer1.py
1 3 13 2 1 4 3 20 6 8 7 6 7 4 8 4 26 2 5 8 8 5 10 9 42 10 ./celtschk
1 4 4 2 1 3 3 20 6 8 7 6 7 4 8 9 26 2 5 8 8 5 4 9 42 10 ruby1.9 strategist.rb
1 4 9 2 1 4 3 20 6 8 7 7 9 6 8 10 26 2 5 8 8 5 9 9 42 10 ./phinotpi2
1 11 7 2 1 1 4 20 6 8 7 6 7 3 8 3 26 2 5 8 8 5 10 9 42 10 ./phinotpi2
1 6 4 2 1 3 9 20 6 8 7 4 6 3 8 4 26 2 5 8 8 5 3 9 42 10 scala Schwarzenbeck
1 13 7 2 1 1 3 20 6 8 7 6 20 4 8 7 26 2 5 8 8 5 4 9 42 10 ./phinotpi2
1 7 4 2 1 4 4 20 6 8 7 6 20 3 8 3 26 2 5 8 8 5 7 9 42 10 ./celtschk
1 13 3 2 1 1 4 20 6 8 7 6 7 3 8 9 26 2 5 8 8 5 3 9 42 10 ./phinotpi2
1 3 4 2 1 3 3 20 6 8 7 6 7 4 8 4 26 2 5 8 8 5 9 9 42 10 ruby1.9 strategist.rb
1 5 4 2 1 2 3 20 6 8 7 6 7 4 8 10 26 2 5 8 8 5 4 9 42 10 ./phinotpi2
1 6 3 2 1 3 4 20 6 8 7 6 7 3 8 3 26 2 5 8 8 5 10 9 42 10 ./phinotpi2
1 10 20 2 1 1 9 20 6 8 7 4 6 3 8 4 26 2 5 8 8 5 3 9 42 10 scala Schwarzenbeck
1 10 3 2 1 4 3 20 6 8 7 6 20 4 8 7 26 2 5 8 8 5 4 9 42 10 ./celtschk
1 12 4 2 1 1 3 20 6 8 7 9 20 6 8 9 26 2 5 8 8 5 7 9 42 10 ./phinotpi2
1 5 3 2 1 1 4 20 6 8 7 6 7 3 9 3 26 2 5 8 8 5 9 9 42 10 ./phinotpi2
1 13 3 2 1 4 9 20 6 8 7 4 6 3 8 4 26 2 5 8 8 5 3 9 42 10 scala Schwarzenbeck
1 6 9 2 1 4 3 20 6 8 7 6 20 4 8 7 26 2 5 8 8 5 4 9 42 10 ./phinotpi2
1 5 4 2 1 2 4 20 6 8 7 6 20 3 8 3 26 2 5 8 8 5 7 9 42 10 ./celtschk
1 12 3 2 1 3 4 20 6 8 7 6 7 3 8 9 26 2 5 8 8 5 3 9 42 10 ./phinotpi2
1 10 7 2 1 2 3 20 6 8 7 6 7 4 8 4 26 2 5 8 8 5 9 9 42 10 ./phinotpi2
1 9 10 2 1 4 9 20 6 8 7 4 6 3 8 3 26 2 5 8 8 5 4 9 42 10 scala Schwarzenbeck
1 9 20 2 1 4 4 20 6 8 7 6 20 3 8 7 26 2 5 8 8 5 3 9 42 10 ruby1.9 strategist.rb
1 6 3 2 1 3 3 20 6 8 7 9 10 6 9 10 26 2 5 8 8 5 7 9 42 10 node minitech1.js
1 13 3 2 1 3 3 20 6 8 7 7 10 6 8 20 26 2 5 8 8 5 10 9 42 11 ./celtschk
1 3 3 2 1 1 3 20 6 8 7 7 26 6 9 9 26 2 5 8 8 5 20 9 42 11 ruby1.9 strategist.rb
1 5 20 2 1 2 3 20 6 8 7 7 11 6 9 11 26 2 5 8 8 5 9 9 42 11 ./phinotpi2
1 7 3 2 1 4 4 20 6 8 7 6 7 3 9 3 26 2 5 8 8 5 11 9 42 11 node minitech1.js
1 7 3 2 1 1 4 20 6 8 7 6 7 3 8 20 26 2 5 8 8 5 3 9 42 10 ./phinotpi2
1 8 4 2 1 4 3 20 6 8 7 6 7 4 8 4 26 2 5 8 8 5 20 9 42 10 ./phinotpi2
1 2 3 2 1 3 9 20 6 8 7 4 6 3 8 3 26 2 5 8 8 5 4 9 42 10 scala Schwarzenbeck
1 4 13 2 1 3 4 20 6 8 7 6 20 3 7 7 26 2 5 8 8 5 3 9 42 10 ./celtschk
1 8 3 2 1 3 3 20 6 8 7 9 20 6 8 9 26 2 5 8 8 5 7 9 42 10 ruby1.9 strategist.rb
1 9 10 2 1 2 3 20 6 8 7 7 10 6 9 10 26 2 5 8 8 5 9 9 42 10 ./phinotpi2
1 10 20 2 1 1 4 20 6 8 7 6 7 3 9 3 26 2 5 8 8 5 10 9 42 10 ./phinotpi2
1 9 4 2 1 1 9 20 6 8 7 4 6 3 8 4 26 2 5 8 8 5 3 9 42 10 scala Schwarzenbeck
1 11 20 2 1 4 3 20 6 8 7 6 20 4 8 7 26 2 5 8 8 5 4 9 42 10 ./phinotpi2
1 4 9 2 1 3 4 20 6 8 7 6 9 3 9 3 26 2 5 8 8 5 7 9 42 10 ruby1.9 strategist.rb
1 5 3 2 1 4 4 20 6 8 7 6 7 3 8 10 26 2 5 8 8 5 3 9 42 10 ./celtschk
1 7 4 2 1 3 3 20 6 8 7 7 9 6 8 9 26 2 5 8 8 5 10 9 42 10 python blazer1.py
1 4 9 2 1 1 3 20 6 8 7 6 7 4 8 4 26 2 5 8 8 5 9 9 42 10 ./phinotpi2
1 8 4 2 1 3 9 20 6 8 7 4 6 3 8 3 26 2 5 8 8 5 4 9 42 10 scala Schwarzenbeck
1 10 9 2 1 3 4 20 6 8 7 6 20 3 8 7 26 2 5 8 8 5 3 9 42 10 ./phinotpi2
1 4 20 2 1 1 3 20 6 8 7 6 20 4 8 4 26 2 5 8 8 5 7 9 42 10 ./phinotpi2
1 5 3 2 1 2 9 20 6 8 7 4 6 3 9 3 26 2 5 8 8 5 4 9 42 10 scala Schwarzenbeck
1 2 4 2 1 1 4 20 6 8 7 6 20 3 8 7 26 2 5 8 8 5 3 9 42 10 ./celtschk
1 10 12 2 1 1 3 20 6 8 7 9 20 6 8 9 26 2 5 8 8 5 7 9 42 10 ./phinotpi2
1 9 4 2 1 4 4 20 6 8 7 6 7 3 9 3 26 2 5 8 8 5 9 9 42 10 ruby1.9 strategist.rb
1 11 3 2 1 3 4 20 6 8 7 6 7 3 8 10 26 2 5 8 8 5 3 9 42 10 ./phinotpi2
1 8 4 2 1 1 3 20 6 8 7 6 7 4 8 4 26 2 5 8 8 5 10 9 42 10 ./phinotpi2
1 13 9 2 1 4 9 20 6 8 7 4 6 3 8 3 26 2 5 8 8 5 4 9 42 10 scala Schwarzenbeck
1 2 9 2 1 3 4 20 6 8 7 6 20 3 8 7 26 2 5 8 8 5 3 9 42 10 ./phinotpi2
1 8 3 2 1 2 3 20 6 8 7 6 20 4 8 4 26 2 5 8 8 5 7 9 42 10 ./celtschk
1 3 3 2 1 4 3 20 6 8 7 6 7 4 8 9 26 2 5 8 8 5 4 9 42 10 ruby1.9 strategist.rb
1 10 4 2 1 1 3 20 6 8 7 7 9 6 8 10 26 2 5 8 8 5 9 9 42 10 ./phinotpi2
1 3 9 2 1 4 4 20 6 8 7 6 7 3 8 3 26 2 5 8 8 5 10 9 42 10 node minitech1.js
1 7 11 2 1 4 4 20 6 8 7 6 7 3 8 20 26 2 5 8 8 5 3 9 42 10 ./celtschk
1 8 3 2 1 2 3 20 6 8 7 7 9 6 8 9 26 2 5 8 8 5 20 9 42 10 ruby1.9 strategist.rb
1 3 10 2 1 3 3 20 6 8 7 7 10 6 9 10 26 2 5 8 8 5 9 9 42 10 node minitech1.js
1 8 4 2 1 1 3 20 6 8 7 7 10 6 8 20 26 2 5 8 8 5 10 9 42 11 ./phinotpi2
1 2 4 2 1 2 4 20 6 8 7 6 7 3 9 3 26 2 5 8 8 5 20 9 42 11 ruby1.9 strategist.rb
1 4 9 2 1 4 4 20 6 8 7 6 7 3 8 11 26 2 5 8 8 5 3 9 42 11 node minitech1.js
1 4 9 2 1 1 3 20 6 8 7 7 11 6 8 20 26 2 5 8 8 5 11 9 42 10 ./phinotpi2
1 2 7 2 1 1 4 20 6 8 7 6 7 3 9 3 26 2 5 8 8 5 20 9 42 10 ./phinotpi2
1 9 3 2 1 1 9 20 6 8 7 4 6 3 8 4 26 2 5 8 8 5 3 9 42 10 scala Schwarzenbeck
1 3 9 2 1 2 3 20 6 8 7 6 20 4 8 7 26 2 5 8 8 5 4 9 42 10 ruby1.9 strategist.rb
1 5 7 2 1 3 3 20 6 8 7 10 20 6 8 10 26 2 5 8 8 5 7 9 42 10 ./celtschk
1 8 10 2 1 4 3 20 6 8 7 7 10 6 9 9 26 2 5 8 8 5 10 9 42 10 ./phinotpi2
1 5 4 2 1 4 4 20 6 8 7 6 7 3 9 3 26 2 5 8 8 5 9 9 42 10 ruby1.9 strategist.rb
1 5 20 2 1 3 4 20 6 8 7 6 7 3 8 10 26 2 5 8 8 5 3 9 42 10 ./phinotpi2
1 11 20 2 1 2 3 20 6 8 7 6 7 4 8 4 26 2 5 8 8 5 10 9 42 10 ./phinotpi2
1 12 10 2 1 1 9 20 6 8 7 4 6 3 9 3 26 2 5 8 8 5 4 9 42 10 scala Schwarzenbeck
1 10 3 2 1 1 4 20 6 8 7 6 20 3 8 7 26 2 5 8 8 5 3 9 42 10 ./phinotpi2
1 9 4 2 1 4 3 20 6 8 7 6 20 4 8 4 26 2 5 8 8 5 7 9 42 10 ./phinotpi2
1 5 3 2 1 1 9 20 6 8 7 4 6 3 8 3 26 2 5 8 8 5 4 9 42 10 scala Schwarzenbeck
1 7 4 2 1 1 4 20 6 8 7 6 20 3 7 7 26 2 5 8 8 5 3 9 42 10 ./celtschk
1 11 7 2 1 3 3 20 6 8 7 9 20 6 8 9 26 2 5 8 8 5 7 9 42 10 ruby1.9 strategist.rb
1 13 10 2 1 1 3 20 6 8 7 7 10 6 9 10 26 2 5 8 8 5 9 9 42 10 ./phinotpi2
1 9 9 2 1 1 4 20 6 8 7 6 7 3 9 3 26 2 5 8 8 5 10 9 42 10 ./phinotpi2
1 7 9 2 1 3 9 20 6 8 7 4 6 3 8 4 26 2 5 8 8 5 3 9 42 10 ruby1.9 strategist.rb
1 13 7 2 1 4 3 20 6 8 7 6 7 4 8 10 26 2 5 8 8 5 4 9 42 10 ./phinotpi2
1 8 7 2 1 1 4 20 6 8 7 6 7 3 8 3 26 2 5 8 8 5 10 9 42 10 ./phinotpi2
1 12 3 2 1 1 9 20 6 8 7 4 6 3 8 4 26 2 5 8 8 5 3 9 42 10 scala Schwarzenbeck
1 13 7 2 1 2 3 20 6 8 7 6 20 4 8 7 26 2 5 8 8 5 4 9 42 10 ./phinotpi2
Results:
Bot Score Total Lowest
perl phinotpi1.pl 0 0 101
./dirichlet 2 25 12
python blazer1.py 3 12 4
perl chef.pl ilmari2.chef 0 0 101
./brainfuck ilmari1.bf 0 0 101
./christophe1 0 0 101
./phinotpi2 44 156 3
node minitech1.js 7 140 20
scala Mueller 0 0 101
scala Beckenbauer 0 0 101
scala Schwarzenbeck 15 105 7
./alice 0 0 101
./bob 0 0 101
./eve 0 0 101
python joe.py 0 0 101
python copycat.py 0 0 101
python totalbots.py 0 0 101
perl healthinspector.pl 0 0 101
./mellamokb1 0 0 101
./mellamokb2 0 0 101
php eightscancel.php 0 0 101
php fivescancel.php 0 0 101
python copycat2.py 0 0 101
./celtschk 14 126 9
./deepthought 0 0 101
ruby1.9 strategist.rb 15 152 10
sumber
Jawaban:
Perl
Saya mencoba sedikit lebih keras kali ini. Ini adalah strategi kompleks yang sangat
sederhana, tetapi saya telah menyiapkan kerangka kerja untuk ekspansi.Sunting: Lengkap ulang. Hal ini ada di dalamnya untuk kemenangan.
Program ini mengambil input satu baris sekaligus, diikuti oleh dua baris baru:
sumber
Koki
Karena selalu bertaruh 1 sekarang merupakan strategi yang kalah , hal yang jelas dilakukan adalah selalu bertaruh 2 . Jadi biarkan saya melakukan itu. Untuk membuat entri yang membosankan ini sedikit lebih menarik, saya memutuskan untuk menulisnya di Chef :
Sebagai bonus, program ini sebenarnya lebih atau kurang berfungsi sebagai resep nyata - jika sepele - bahkan jika dibaca seperti penulisnya sedikit, um, terpanggang. Tata bahasa Chef tampaknya membuatnya sangat sulit untuk menulis apa pun yang melibatkan sesuatu yang lebih rumit daripada mencampurkan barang ke dalam mangkuk dan memanggangnya dan tetap membuatnya berfungsi baik sebagai program dan sebagai resep, terutama jika ada kata kerja yang ingin digunakan bahkan sedikit tidak teratur (seperti "goreng" → "goreng").
Edit: Mengubah resep dari goreng menjadi telur shirred - terima kasih kepada Blazer untuk sarannya! Waktu dan suhu memasak harus dipertimbangkan hanya sebagai penasehat; Saya belum benar-benar mencoba resepnya sendiri, jadi saya tidak dapat menjamin keakuratannya.
sumber
shirred eggs
, yang sebenarnya dilakukan dalam loyang dan itu akan membuat resep tersebut menjadi resep memasak yang benar dan secara tata bahasa benar.shirr the eggs. shirr the eggs until shirred.
mengerikan karena memiliki pendidikan kuliner di bawah ikat pinggang saya! :)Python (2.6)
Sangat sederhana, tetapi saya masih penasaran bagaimana kinerjanya dibandingkan dengan pendekatan lain.
Cukup masukkan penawaran melalui stdin, mis
python testbid.py < bids.txt
.EDIT : diubah untuk 'putaran pertama semua nol'
EDIT : sedikit mengubah 'angka ajaib' (kedua kalinya)
sumber
m = random.choice(1,2,2,3,3,3)
menjadim = random.choice([1,2,2,3,3,3])
?Python (Blazer)
Bot ini menganalisis putaran sebelumnya dan mencatat angka yang menang. Karenanya, nomor pemenang yang lebih sering muncul akan memiliki peluang lebih baik untuk dipilih. Kemudian akan secara acak memilih angka dari angka yang menang (selain 1 atau 2). itu akan memilih
23 sebagai gantinya jika itu adalah babak pertama.Input dibaca satu baris setiap kali. cukup masukkan baris kosong untuk berhenti menerima inputCaranya adalah dengan hanya menempelkan (itu secara otomatis menerima setiap baris dengan \ n di dalam tempel) dan tekan enter dua kaliAnda sekarang bisa saja meretas skrip dengan nama file di baris perintah:
file akan terlihat seperti ini:
-
sunting: ditambahkanor sum(rounds) == 0
untuk mengkompensasi perubahan putaran pertama semua-nol baru-baru inisunting: masalah dalam komentar diperbaiki, juga membuatnya dapat menerima input dari nama file, dan tidak pernah memilih '2' lagi karena kompetisi telah menyingkirkan itu juga. bekerja dengan semua-0 sebagai input awal atau tidak ada data dalam file sama sekali
edit2: lupa min ()
sunting3: input yang diubah sesuai dengan kebutuhan input pertanyaan
sumber
echo "$@" | python bidding.py
harus melakukan pekerjaan.TypeError: unsupported operand type(s) for +: 'int' and 'list'
untuk baris 23. Saya menggunakan Python 2.6.1, apakah itu masalahnya? apakah saya memerlukan versi yang lebih baru? Saya mendapatkan masalah yang sama tanpa menggunakan skrip bash.Schwarzenbeck (Scala)
Schwarzenbeck tidak seharusnya mencetak gol. Dia adalah pembersihan untuk Beckenbauer, yang segera menyusul. :)
Untuk menggunakannya, Anda memerlukan kompiler dan kompilasi
Maka Anda dapat menjalankannya:
Sunting: Penyesuaian lebih lanjut.
sumber
Ahli Strategi (Ruby)
Menerapkan ratusan strategi sederhana: untuk setiap putaran, pilih satu yang akan memenangkan putaran sebelumnya:
Saya tidak yakin saya memiliki format input yang benar - Saya tidak yakin bagaimana cara menghasilkan argumen baris perintah multi-baris untuk mengujinya di windows. (Metode ini tampaknya berfungsi pada IDEone.)
sumber
strategist.rb:48:in 'each': No such file or directory - 42 2 6 10 8 6 5 7 6 1 5 8 3 6 3 4 26 2 10 1 26 8 42 5 3 7 (Errno::ENOENT)
. Saya akan berhenti mempertimbangkan entri baru setelah jam 11 malam, tetapi saya akan menunda sedikit skor untuk memberi Anda waktu untuk melihat bug jika Anda mau.ARGF
bukan ARGV. Setelah melakukan perubahan itu, program menebak1
setiap kali. Adakah yang bisa saya lakukan untuk memperbaikinya?p ARGV.map{|l|l};exit
(Tidak ada jawaban SO untuk pertanyaan yang Anda referensi atau yang serupa tampaknya memberi saya input yang diharapkan)["1 2\n3 4\n5 6\n1 2"]
untuk input tes dalam pertanyaan.Perl
Saya pikir saya mungkin juga memasuki yang tak terhindarkan. Entri yang lebih serius segera hadir. Sebagai bonus, entri ini tidak akan pernah kalah dalam kompetisi satu lawan satu.
sumber
JavaScript (node.js)
Menghitung apa yang paling populer pada babak terakhir dan menawar satu lebih sedikit dari itu, membungkus ke 20 dan menawar 3 pada putaran pertama.
Cara memohon:
sumber
for
loop pertama ? Harusif(i in numbers)
menjadiif(matches[i] in numbers)
yang Anda pikir?node.js:201 throw e; // process.nextTick error, or 'error' event on first tick TypeError: Cannot read property 'length' of null at Object.<anonymous> (minitech1.js:6:23)
Python (CopyCat)
Lain lagi, kali ini salinan jawaban yang tepat yang dimiliki pemenang terakhir, jika ada. Ini baik untuk mencoba menang dan memblokir penawar lainnya. tawaran
5
jika babak pertama, tawaran nomor acak dari babak sebelumnya jika entah bagaimana tidak ada pemenangsumber
Python (Joe)
Ini sama sekali tidak dirancang untuk menang, tapi saya tetap melemparkannya di luar sana untuk menambahkan warna ke kerumunan :) Itu tawaran rata-rata dari babak terakhir (Average Joe). Dipanggil sama dengan jawaban asli saya (yang sekarang akan saya beri nama karena sepertinya itulah yang dilakukan semua anak keren, dan membantu membedakan keduanya). jika memulai putaran, itu tawaran
10
.sunting: metode input yang diubah agar sesuai dengan metode input pertanyaan
sumber
Python (TotalBots)
Saya pikir ini akan menjadi yang terakhir, tetapi kita akan lihat nanti. Dibutuhkan keuntungan dari mengetahui berapa banyak bot yang ada dengan hanya mengeluarkan jumlah bot yang bersaing, jadi jika ada 17 bot (jumlah bot saat ini, ditambah yang satu ini), itu akan menghasilkan
17
sumber
Perl (Inspektur Kesehatan)
Saya yakin Anda bisa menebak apa fungsinya.
sumber
C ++ (Guucated Guess)
Saya sudah berpikir saya akan melewatkan tenggat waktu, tetapi berkat ekstensi saya masih bisa menambahkan entri saya. Program ini dikompilasi dengan g ++. Program ini mencoba untuk menebak statistik dari entri lain, dan untuk memilih yang terkecil tidak akan dipilih oleh yang lain.
sumber
Perl (Bob)
Lihat "Bob" untuk cara memohon.
sumber
Perl (Alice)
Mengambil input yang mirip dengan bot saya yang lain.
sumber
Perl (Hawa)
Saya benar-benar redid entri ini untuk membantu membuka jalan bagi bot saya yang lain.
Mengambil satu format input: sama dengan "Bob" dan "Alice".
sumber
Brainfuck
Mengutip dari tantangan:
Yah, karena PhiNotPi memang memasukkan satu , biarkan saya memasukkan yang lain. Agar berbeda, saya akan melakukannya di Brainfuck:
Tentu saja, sekarang taruhan 1 bukan lagi strategi yang layak, hal yang jelas harus dilakukan sekarang adalah bertaruh 2 ...
Sunting: Pisahkan jawaban menjadi dua per komentar, tulis ulang kedua program dalam bahasa yang lebih menarik.
sumber
Mueller (Scala)
Jika Anda mengenal Schwarzenbeck dan Beckenbauer, Anda tentu mengharapkan Mueller. Ini dia. Dia akan mendapat banyak manfaat dari Beckenbauer dan Schwarzenbeck dan seharusnya menang.
Detail tentang menjalankan dan kompilasi: Lihat Schwarzenbeck
Lebih dekat ke tujuan, sekarang.
sumber
Beckenbauer (Scala)
Dengan bantuan Schwarzenbeck, Beckenbauer seharusnya mencetak beberapa gol. Tanpa Schwarzenbeck, dia bukan siapa-siapa.
Detail tentang menjalankan dan kompilasi: Lihat [Schwarzenbeck] [1]
Sunting: Bermain lebih dalam di ruangan sekarang juga.
sumber
Script Batch
Kiriman saya, berikan 5 sebagai jawabannya setiap kali ;-)
sumber
Eight.bat
Jawaban sederhana lain, memberi 8 setiap kali.
sumber
FivesCancel (PHP)
Membatalkan solusi "selalu 5" mellamokb.
sumber
EightsCancel (PHP)
Membatalkan solusi "selalu 8" mellamokb. Maaf, mellamokb!
sumber
Python 2.7 - Copycat2
Salinan pemenang babak terakhir kedua . Oh tidak! jika tidak, output 7.
sumber
Script Shell (Pemikiran Dalam)
OK, jadi saya mendapat sedikit kesempatan kedua, inilah entri lain, kali ini skrip shell (harus bekerja dengan shell apa pun). Ini selalu memberikan jawaban untuk pertanyaan tentang kehidupan, alam semesta dan segalanya.
Sebenarnya algoritma ini tidak sepenuhnya benar karena saya menghilangkan penundaan 7,5 juta tahun. :-)
sumber
dirichlet.c
Saya pikir ini melewati bit acak terlalu cepat untuk digunakan
/dev/random
, betapapun saya lebih suka. Jika ada yang ingin mengujinya di Windows Anda harus porting sendiri, karena saya tidak memiliki akses ke kotak Windows dengan kompiler C.Alasan
Saya tidak ingin menjelaskan logika di balik ini sebelum turnamen berakhir, tetapi sekarang setelah pemenangnya diumumkan, saya pikir sudah waktunya.
Dengan prinsip lubang-merpati (prinsip Dirichlet alias, maka nama bot), jika ada bot N bersaing maka ada nomor w di [1..1 + N / 2] yang baik menang atau akan menang jika terpilih. Karena itu saya menyimpulkan bahwa strategi optimal tidak akan memilih angka yang lebih besar dari 1+ N / 2. Tetapi jika N adalah genap, memilih 1+ N / 2 menciptakan slot kemenangan yang lebih kecil. Oleh karena itu slot yang layak dipilih adalah [1 .. ( N +1) / 2].
Itu meninggalkan pertanyaan tentang bagaimana memilih slot. Untuk sejumlah kecil bot saya memverifikasi bahwa ada keseimbangan Nash ketika setiap bot memilih secara seragam di antara para kandidat, dan saya sangat curiga bahwa ini akan terus berlaku.
Penyimpangan kecil dalam strategi bot ini dari yang teoretis hanyalah metagaming.
sumber