स्टैक एक्सचेंज स्टॉक एक्सचेंज ~ संशोधित [बंद]


35

पृष्ठभूमि

आप सभी व्यापारी प्रतिष्ठित स्टॉक फर्म से थोड़े कम के लिए हैं। आप सभी व्यापारियों के एक समूह का हिस्सा हैं जो केवल एक विशिष्ट स्टॉक पर ध्यान केंद्रित करते हैं।

प्रत्येक घंटे प्रत्येक व्यापारी के पास एक्स स्टॉक खरीदने या एक्स स्टॉक बेचने का मौका होता है। प्रति राउंड 50 घंटे और प्रति प्रतियोगिता 3 राउंड होते हैं। सभी राउंड के अंत में सबसे अधिक औसत मूल्य वाला व्यापारी जमैका की यात्रा जीतता है!

गेमप्ले

प्रत्येक में 50 चक्कर के 3 राउंड होते हैं।

प्रत्येक व्यापारी $ 5000 के साथ दौर शुरू करता है और 20 और 30 शेयरों के बीच यादृच्छिक संख्या में शेयर करता है। शेयरों की कीमत 10 और 150 के बीच एक यादृच्छिक संख्या से शुरू होती है।

प्रत्येक व्यापारी बारी-बारी से किसी भी संख्या में शेयर खरीद सकते हैं, जो वे वर्तमान में प्रति शेयर वर्तमान कीमत के लिए प्रत्येक शेयर की किसी भी संख्या को खरीद सकते हैं या बेच सकते हैं।

प्रति शेयर बेचे गए प्रत्येक शेयर के लिए 1 और 5 के बीच एक यादृच्छिक संख्या से मूल्य बढ़ता है और बेचा जाने वाले प्रत्येक शेयर के लिए 2 और 6 के बीच यादृच्छिक मूल्य से घटता है। न्यूनतम मूल्य $ 1 है।

यह ध्यान रखना महत्वपूर्ण है कि सभी व्यापारी एक ही समय में अपने लेनदेन की प्रक्रिया करते हैं, जिसका अर्थ है कि किसी भी व्यापारी को शेयर खरीदने / बेचने से अगले मोड़ तक कीमत प्रभावित नहीं होगी।

3 राउंड जीत के अंत में सबसे अधिक औसत मूल्य वाला खिलाड़ी। मूल्य को राउंड के अंत में बचे हुए धन की राशि लेने और व्यापारी के स्वामित्व वाले शेयरों की संख्या को जोड़कर निर्धारित किया जाता है।

तर्क

आपका कार्यक्रम वर्तमान बाजार मूल्य, व्यापारी की वर्तमान राशि और उस व्यापारी के स्वामित्व वाले शेयरों की संख्या प्राप्त करने वाले प्रत्येक मोड़ की शुरुआत में फिर से शुरू होगा।

उदाहरण के लिए:

120 5000 0

उत्पादन

आपके व्यापारी कार्यक्रम को उस कार्रवाई के अनुरूप एक पत्र का उत्पादन करना होगा जो मात्रा द्वारा पीछा करना चाहता है।

उदाहरण के लिए:

B10 //Buy 10 shares

या

S3 //Sell 3 shares

व्यापारी के पास यह भी विकल्प होता है कि वह ऐसा कुछ भी नहीं कर सकता है। एक W या किसी अन्य कमांड को आउटपुट करके पूरा किया जा सकता है जो 'B> amnt <' या 'S> amnt <' नहीं है

प्रस्तुतियाँ

आपका कार्यक्रम 'खिलाड़ियों /> आपके कार्यक्रम के नाम <' निर्देशिका के अंदर होगा:

+-- players
|   +-- BotNameFolder
|       +-- BotProgram   

कृपया अपने कोड को 'खिलाड़ियों की निर्देशिका' के अंदर से चलाने के लिए कमांड लाइन तर्क के साथ प्रदान करें। उदाहरण के लिए Test1 व्यापारी के साथ चलाया जा सकता हैjava -cp "Test1" Test1

अतिरिक्त नियम

आगे बढ़ो, अपने आप को इमोवुल्फ, ईदक शूट करें।

अपने BotNameFolder निर्देशिका के बाहर किसी भी चीज के साथ कोई खिलवाड़ नहीं करता है, बेझिझक वहां राउंड / टर्न के लिए लगातार जानकारी के लिए फाइल बनाना चाहता है।

सिमुलेशन को क्रैश करने के लिए जानबूझकर कार्यक्रम न बनाएं।

मैं प्रति उपयोगकर्ता कई प्रविष्टियों को स्वीकार करूंगा, जब तक कि प्रविष्टियां अलग-अलग संस्थाओं के रूप में कार्य करती हैं (कोई अंदरूनी व्यापार नहीं)।

लीडरबोर्ड

[java&-cp&"TestPlayer"&Test1]:$10027395221
[python&daydreamer/daydreamer.py]:$5000
[java&-cp&"DayTrader"&DayTrader]:$4713199930331196453

मैं दिन में कम से कम एक बार लीडरबोर्ड को अपडेट करने का प्रयास करूंगा

नियंत्रक

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Queue;
import java.util.Random;


public class Controller {

    public static BigInteger marketValue = BigInteger.valueOf(100);
    public static BigInteger newValue = BigInteger.valueOf(100);

    public static final char BUY = 'B';
    public static final char SELL = 'S';

    public static final int MARKET_INDEX = 1;
    public static final int MONEY_INDEX = 2;
    public static final int SHARE_INDEX = 3;

    public static int numRunning = 0;
    public static final int MAX_RUNNING = 10;

    public static void main(String[] args){
        try {
            BufferedReader br1 = new BufferedReader(new InputStreamReader(new FileInputStream("resources/config")));

            int numRounds = Integer.parseInt(br1.readLine());
            int turnsPerRound = Integer.parseInt(br1.readLine());

            //Create the array of players
            List<String> players = new LinkedList<String>();
            String line1 = null;
            while((line1 = br1.readLine()) != null){
                players.add(line1);
            }
            BigInteger[] totalVals = new BigInteger[players.size()];
            for(int i = 0; i < totalVals.length; i++){
                totalVals[i] = BigInteger.valueOf(0);
            }
            br1.close();

            //Begin processing
            for(int round = 0; round < numRounds; round++){
                //Create players' shares and currency array
                Map<String,BigInteger[]> vals = new HashMap<String, BigInteger[]>();
                for(int i = 0; i < players.size(); i++){
                    vals.put(players.get(i), new BigInteger[]{BigInteger.valueOf(5000), BigInteger.valueOf(getRandInt(20,30))});
                }
                marketValue = BigInteger.valueOf(getRandInt(10,150));
                newValue = marketValue;
                for(int turn = 0; turn < turnsPerRound; turn++){
                    marketValue = newValue;
                    Queue<Object[]> processQueue = new LinkedList<Object[]>();
                    for(String playerKey : vals.keySet()){
                        BigInteger[] valSet = vals.get(playerKey);
                        String[] pkParts = playerKey.split("&");
                        String[] parts = new String[pkParts.length + 3];
                        for(int i = 0; i < pkParts.length; i++){
                            parts[i] = pkParts[i];
                        }
                        parts[pkParts.length] = marketValue + "";
                        parts[pkParts.length + 1] = valSet[0] + "";
                        parts[pkParts.length + 2] = valSet[1] + "";
                        processQueue.add(new Object[]{playerKey, parts});
                    }

                    while(!processQueue.isEmpty() || numRunning > 0){
                        if(numRunning < MAX_RUNNING && !processQueue.isEmpty()){
                            numRunning++;
                            Object[] o = processQueue.poll();
                            String pKey = (String)(o[0]);
                            String[] p = (String[])(o[1]);
                            try {
                                Process proc = new ProcessBuilder(p).directory(new File("resources/players").getAbsoluteFile()).start();
                                BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
                                String line = br.readLine();
                                br.close();
                                switch(line.charAt(0)){
                                case BUY :
                                    BigInteger numShares = new BigInteger(line.substring(1).trim());
                                    if(numShares.multiply(marketValue).compareTo(vals.get(pKey)[0]) <= 0){
                                        BigInteger[] tempVals = vals.get(pKey);
                                        tempVals[0] = tempVals[0].subtract(numShares.multiply(marketValue));
                                        tempVals[1] = tempVals[1].add(numShares);
                                        vals.put(pKey, tempVals);
                                        newValue = newValue.add(numShares.multiply(BigInteger.valueOf(getRandInt(0,2))));
                                        if(newValue.compareTo(BigInteger.valueOf(Integer.MAX_VALUE)) >= 1){
                                            newValue = BigInteger.valueOf(Integer.MAX_VALUE - 1);
                                        }
                                    }
                                    break;
                                case SELL:
                                    BigInteger shares = new BigInteger(line.substring(1).trim());
                                    if(shares.compareTo(vals.get(pKey)[1]) <= 0){
                                        BigInteger[] tempVals = vals.get(pKey);
                                        tempVals[0] = tempVals[0].add(shares.multiply(marketValue));
                                        tempVals[1] = tempVals[1].subtract(shares);
                                        vals.put(pKey, tempVals);
                                        newValue = newValue.subtract(shares.multiply(BigInteger.valueOf(getRandInt(5,10))));
                                        if(newValue.compareTo(BigInteger.valueOf(1)) <= -1){
                                            newValue = BigInteger.valueOf(1);
                                        }
                                    }
                                    break;
                                }
                            } catch (Exception e) {
                                System.err.println("[" + pKey + "] threw error:");
                                e.printStackTrace();
                            } finally{
                                numRunning--;
                            }
                        }else{
                            try{
                                Thread.sleep(50);
                                continue;
                            }catch(InterruptedException e){
                                continue;
                            }
                        }
                    }
                    System.out.println("Turn " + turn + " over: " + marketValue);
                }
                System.out.println("End of round market value is: " + marketValue);
                int count = 0;
                for(String player : vals.keySet()){
                    totalVals[count] = totalVals[count].add(vals.get(player)[0].add(vals.get(player)[1].multiply(marketValue)));
                    count++;
                }
                newValue = BigInteger.valueOf(100);
            }
            for(int i = 0; i < players.size(); i++){
                System.out.println("[" + players.get(i) + "]:$" + (totalVals[i].divide(BigInteger.valueOf(numRounds))));
            }
        } catch (Exception e) {
            System.err.println("An exception occured while running the controller.");
            e.printStackTrace();
        }
    }
    public static Random r = new Random(new Date().getTime());
    public static int getRandInt(int min, int max){
        return r.nextInt(max - min) + min;
    }
}

इसे संकलित करें java Controller.javaऔर एक निर्देशिका से चलाएं जिसमें नीचे एक निर्देशिका है:

+-- resources
|   +-- config
|   +-- players
|       +-- Player1Folder
|           +-- Player1Program
|       +-- Player2Folder
|           +-- Player2Program

फ़ाइल configकुछ इस तरह दिखनी चाहिए:

3
50
java&-cp&"TestPlayer"&Test1
python&daydreamer/daydreamer.py
java&-cp&"DayTrader"&DayTrader

पहला नंबर राउंड की संख्या है, दूसरा नंबर राउंड प्रति है, इसके बाद कमांड प्रत्येक खिलाड़ी को चलाने के लिए है।

Ampersands के साथ रिक्त स्थान बदलें! ( 'और')

~ मुझे बताएं कि क्या मैं इस पोस्ट के शब्दों में सुधार कर सकता हूं, और खुश ट्रेडिंग!


4
ऐसा लगता है कि व्यस्त बाजार में लंबी अवधि के रुझान से शेयर का नकारात्मक मूल्य होगा।
पीटर टेलर

6
क्या आप अपने कंट्रोलर प्रोग्राम को गितुब जैसी चीज़ पर रख सकते हैं और एक लिंक शामिल कर सकते हैं ताकि हम घर पर परीक्षण कर सकें?
पीटर टेलर

6
लीडरबोर्ड को देखते हुए, मुझे लगता है कि खेल वर्तमान में त्रुटिपूर्ण है। उदाहरण के लिए, $ 14 / sh पर शुरू करें, 357 (बैंक में स्वयं 357, $ 0) खरीदें। यादृच्छिक संख्या (3) चुनें। मूल्य 3 * 357 से $ 1085 / श तक बढ़ जाता है। अगला दौर। सभी 357 शेयर (बैंक में खुद के, $ 387,345) को बेचें। यादृच्छिक संख्या (3) चुनें। मूल्य 3 * 357 से $ 14 / sh तक नीचे चला जाता है। अगला दौर। दो राउंड के बाद, कीमत में बदलाव नहीं हुआ है और आपका बैंक 77 गुना बढ़ा है (इसी तरह के कम नाटकीय परिणाम अन्य शुरुआती यादृच्छिक चर के साथ हो सकते हैं)। मैं अधिक उचित मूल्यों के लिए प्रत्येक शेयर के बदले प्रत्येक लेनदेन के लिए बदलने का प्रस्ताव करता हूं ।

4
या सिर्फ एक वास्तविक ऑर्डर बुक बनाएं।
ओ ० '।

3
शेयरों की एक यादृच्छिक संख्या के साथ क्यों शुरू करें?
Averroes

जवाबों:


18

मैं 'दिवास्वप्न' प्रस्तुत करता हूं, जो हमेशा सोता रहता है और कुछ भी खरीदना या बेचना भूल जाता है। उन्हें उम्मीद है कि अन्य खिलाड़ियों को शुद्ध नुकसान होगा। पायथन कोड:

if __name__ == "__main__":
    print "W"

python daydreamer\daydreamer.py 120 5000 0जो आप चाहते हैं या उसके साथ चलाएं ।

मैं बाद में एक और अधिक गंभीर उत्तर पोस्ट करूंगा, यह केवल गेंद को लुढ़काने के लिए है :)


3
मुझे नहीं लगता कि यह चलेगा - आपको प्रिंट इंडेंट करने की आवश्यकता है।
isaacg

6
यह देखते हुए कि शेयर की कीमत लंबे समय में कम हो जाएगी, न कि ट्रेडिंग एक उत्कृष्ट रणनीति हो सकती है।

5
एक अजीब खेल: केवल जीतने वाला कदम नहीं खेलना है। शतरंज के एक अच्छे खेल के बारे में कैसे?
टिम एस।

13

दिन का व्यापारी

8/21/2014 को किए गए नियम परिवर्तन के लिए अपडेट किया गया, जहां खिलाड़ी अब 20-30 शेयरों के साथ शुरू करते हैं।

जितना संभव हो खरीदता है, फिर जितना संभव हो उतना बेचता है।

दर्शन

हम आशा करते हैं कि नीचे का पैटर्न खुद को बार-बार दोहराएगा। ध्यान दें कि इस पैटर्न का पालन करने से, हम भी इसमें योगदान करते हैं।

  • हर कोई केवल एक राउंड पर खरीद या पकड़ सकता है। मूल्य केवल बढ़ सकता है, इसलिए हम खरीदते हैं।
  • हर कोई दौर दो पर अधिक खरीद सकता है, पकड़ सकता है, या बेच सकता है। हम उम्मीद नहीं करते कि कई खिलाड़ी राउंड दो पर खरीदेंगे, इसलिए हम बेचते हैं।

पैटर्न शुरुआत में स्पष्ट है। एक दौर के बाद मूल्य में वृद्धि होगी । यह दो दौर के बाद घट जाना चाहिए। इसके अलावा, अनुमानों से फजीहत होती है। बाजार के स्थिर होने से पहले मुझे शुरुआती दौर में अच्छा प्रदर्शन करने की उम्मीद है।

import java.math.BigInteger;

/**
 * Submission for http://codegolf.stackexchange.com/q/36515/18487
 * @author Rainbolt
 */
public class DayTrader {

    /**
     * @param args the command line arguments containing the current 
     * market value, our current money, and our current shares
     */
    public static void main(String[] args) {
        BigInteger marketValue = new BigInteger(args[0]);
        BigInteger myMoney = new BigInteger(args[1]);
        BigInteger myShares = new BigInteger(args[2]);

        // If we have less than or equal to 30 shares, buy as much as possible
        if (myShares.compareTo(new BigInteger("30")) <= 0) {
            System.out.println("B" + myMoney.divide(marketValue).toString());
        // Otherwise, sell as much as possible
        } else {
            System.out.println("S" + myShares.toString());
        }
    }

}

के साथ संकलित करें javac DayTrader.java। के साथ भागो java -cp "DayTrader" DayTrader


1
याय जावा! मेरे लिए इसे चलाना आसान बनाता है।
spocot

6
आपका बॉट निर्मित बाजार पूर्णांक के लिए अधिकतम संख्या से परे है, इसलिए मैंने बिगइंटर को कोड में लागू किया। चूँकि हर किसी के कोड में
चींटियों

@spocot मैंने BigInteger का उपयोग करने के लिए अपना कार्यान्वयन संपादित किया। उम्मीद है कि मदद करता है।
रेनबोल्ट

5
मुझे लगता है कि यह नियमों में एक अंतर्निहित समस्या है। यदि एक व्यापारी को 140 शेयर मिलते हैं तो वह बाजार को खुद से नियंत्रित कर सकता है। दो राउंड में वह 10 प्रत्येक के लिए शेयर खरीद सकता है और 140 प्रत्येक के लिए उन्हें बेच सकता है, जिससे 1300% की जीत होगी (यह मानते हुए कि कोई भी विपरीत नहीं करता है)। यह 5000 * 13 ^ 25 जैसी किसी चीज़ के लिए आगे बढ़ेगा, जो बड़े पैमाने पर है।
ऑप्टोकॉपर

2
@spocot मैं सिर्फ आपको पिंग करना चाहता था क्योंकि मैंने आपके हालिया नियम में बदलाव के बाद अपना सबमिशन संशोधित किया था।
बारिश का समय

9

वॉल्ट डिज़नी - पायथन 3

वॉल्ट तब तक इंतजार करता है जब तक शेयर रॉक के नीचे से नहीं टकराते और तब तक खरीदता है जब तक कि उसके पैसे की अनुमति न हो। फिर, जब कीमत बढ़ जाती है, तो वह उन सभी को बेच देता है।

जब वे वॉल स्ट्रीट क्रैश के माध्यम से 'बच गए' डिज्नी की रणनीति पर आधारित थे। दुर्भाग्य से, मेरा कार्यक्रम थीम पार्क नहीं बना सकता है ... यदि केवल ...

चलाएँ:

python3 waltdisney.py

कोड:

from sys import argv
import os

price=int(argv[1])
money=int(argv[2])
share=int(argv[3])

if os.path.exists('./buyingprice.txt'):
    f = open('buyingprice.txt', 'r')
    buyingprice=int(f.read())
    f.close()
else:
    buyingprice=0

if share > 0:
    if price > buyingprice*10:
        print('S'+str(share))
    else:
        print('W')
elif money > 0:
    if buyingprice==0:
        print('B10')
        m=open('buyingprice.txt', 'w')
        m.write(str(price))
        m.close()
    elif price <= buyingprice:
        print('B'+str(int(money/price)))
        g=open('buyingprice.txt', 'w')
        g.write(str(price))
        g.close()
    else:
        print('W')

आप अपनी पहली प्रिंट लाइन पर एक बंद कोष्ठक को याद कर रहे हैं।
सुपरसम ​​654

@ supersam654 ओह, हाँ, धन्यवाद
बीटा डिके

क्या आप अपने दावे के लिए एक स्रोत की ओर इशारा कर सकते हैं कि वॉल्ट डिज़नी ने वास्तव में इस रणनीति का उपयोग किया था। यह देखते हुए कि स्टॉक एक्सचेंज में वॉल्ट डिज़नी कंपनी नाम की कंपनी है जिसे खोजना मुश्किल है, और वॉल्ट के विकिपीडिया पेज में इसका उल्लेख नहीं है।
माइकल


@ मीकल मुझे मूल रूप से अपने इतिहास के शिक्षक से जानकारी मिली है, इसलिए यदि स्रोत थोड़ा कमजोर है तो क्षमा करें।
बीटा डिके

8

मामूली सिपाही

केवल वही जानता है जो उसके पास है, लेकिन बाजार पर सब कुछ जोखिम के लिए निर्धारित है। अगर वह खरीद सकता है, तो वह करेगा। यदि वह नहीं कर सकता है, तो वह अपने पास जो कुछ भी है उसे बेचता है ताकि वह अगले मोड़ पर आ सके। (यह DayTrader जैसे चरम लोगों के साथ अच्छी तरह से काम करेगा, लेकिन जब वह सोचता है कि यह बढ़ेगा, तो मूल्य स्वतः गिर जाएगा।)

import java.math.BigInteger;

public class Tommy {
    public static void main(String[] args) {
        BigInteger Value = new BigInteger(args[0]);
        BigInteger Money = new BigInteger(args[1]);
        BigInteger Shares = new BigInteger(args[2]);

       if (Money.compareTo(Value)<1) {
           System.out.print("S" + Shares.toString());
       } else {
           System.out.print("B" + Money.divide(Value).toString());
       }
    }

}

Golfscript

यह एक ही कोड है, लेकिन अगर इसे पसंद किया जाता है। जब मुझे BigInteger चीज़ की आवश्यकता थी, तब मैंने जावा लिखा। जो भी आसान हो उसका उपयोग करें।

2$2$>{@@;;"S"\}{;\/"B"\} if

भविष्य के संदर्भ के लिए, जीएस में सभी नंबर बड़े पूर्णांक हैं।
पीटर टेलर

मुझे लगता है कि मैं इसके बारे में चिंता किए बिना सिर्फ मूल पोस्ट कर सकता था! खुशखबरी।
kaine

मैंने मूल रूप से टिप्पणी की कि मुझे लगा कि यह डेटट्रैडर की नकल है, लेकिन तब मैंने महसूस किया कि व्यवहार केवल परिस्थितियों के कारण ही है, और वे अन्य परिस्थितियों में विचलन कर सकते हैं। क्षमा करें यदि मैंने किसी को नाराज किया। चलो एक साथ अमीर हो जाओ!
रेनबोल्ट

@Rainbolt मैंने इसे GolfScript लिखा है, सबमिट करने से पहले डुप्लिकेट की तलाश में आपका पढ़ा, और वास्तव में जावा संस्करण लिखने के लिए कुछ या आपके कोड का उपयोग किया। मुख्य भाग कोई डुप्लिकेट नहीं है (या मैंने इसे सबमिट नहीं किया होगा) लेकिन इन वॉलिटाइल मार्केट्स में सिमुलर होने के कारण समाप्त होता है। मैं नाराज नहीं हूं, लेकिन अगर आपको लगता है कि यह बहुत करीब है, तो मैं इसे अयोग्य घोषित करने का अनुरोध करूंगा (लेकिन कोड बना रहेगा, मैंने इसे लिखना सीख लिया, जो पूरा बिंदु है)। जैसा कि आपकी प्राथमिकता है मैं उस मामले में भी नाराज नहीं होगा। ध्यान दें कि भूकंप आपके लिए लगभग समान है लेकिन क्या यह अलग तरीके से होता है (फ़ाइल को सहेजता है)।
किन्नर

@kaine नहीं नहीं इसे हटाएं नहीं। जैसा मैंने कहा, मुझे लगा कि वे डुप्लिकेट थे, लेकिन वे निश्चित रूप से नहीं हैं । वे केवल परिस्थितियों के कारण व्यवहार में समान हैं। मैं एक टिप्पणी पोस्ट करने से पहले यह दावा करना गलत था कि वे डुप्लिकेट थे इससे पहले कि मैं पूरी तरह से समझ गया कि आपका क्या कर रहा था।
रेनबोलेट

6

BuyAndHold - सी

#include <stdio.h>
#include <stdlib.h>

/* BuyAndHold
 * Code revised from OptoKopper's WaitForCrash.c
 */
int main(int argc, char *argv[]) {
    long long int share_price = strtoll(argv[1], NULL, 0);
    long long int money = strtoll(argv[2], NULL, 0);

    if (money >= share_price) {
        printf("B%lld\n", money / share_price);
    } else {
        printf("W\n");
    }

    return 0;
}

इसके साथ संकलित करें: gcc buyandhold.c -o buyandhold

इसे ./buyandhold PRICE MONEY SHARES के साथ चलाएं


1
Haha मुझे उम्मीद थी कि कोई BuyAndHold के साथ DayTrader का पूरक होगा। बहुत बढ़िया!
बारिश का समय

6

अल्फ्रेड पेनवर्थ - पायथन 2

जब मैं एक रात गश्त पर था, अल्फ्रेड ने मेरी जानकारी के बिना एक स्टॉक ट्रेडिंग प्रोग्राम बनाने की कोशिश की। उसने सोचा कि वह इसे मुझसे छिपा सकता है, लेकिन मैंने इसे पाया और यह पता लगाया कि उसने क्या किया। क्योंकि मैं बैटमैन हूं। अब मैंने उसे सबक सिखाने की प्रतियोगिता में प्रवेश करने का फैसला किया है।

अल्फ्रेड के लिए पैसा कोई वस्तु नहीं है क्योंकि मैं वास्तव में अमीर हूं, लेकिन वह अभी भी अपने व्यापार के बारे में चालाक है। जब वह शेयरों से बाहर हो जाता है, तो वह बाजार मूल्य की परवाह किए बिना जितने खरीद सकता है, खरीदता है। फिर वह हर बार बाजार मूल्य पर खरीदे गए मूल्य से 10 (या शेष सभी) शेयर बेचता है।

import argparse

parser = argparse.ArgumentParser(description="This is a private matter, Master Bruce. Learn how to make your own bed and I will tell you.")
parser.add_argument("Stuff", type=int, nargs='+', help="You don't need to know, Master Bruce.")

args=parser.parse_args()
vals=[]
for x in args:
    vals.append(x)

a=vals[0]
b=vals[1]
c=vals[2]

if c==0:
    x=1
    while x*a<b:
        x+=1
    print "B"+str(x)
    with open("lastval.txt", w) as f:
        f.write(a)

else:
    lastval=next(open("lastval.txt"))
    if a>lastval:print "S10" if c>10 else "S"+str(c)
    else:print 'W'

साथ दौड़ो: python GoAwayMasterBruce.py <args>


AttributeError: 'ArgumentParser' object has no attribute 'parseargs'पायथन के किस संस्करण की आवश्यकता है?
पीटर टेलर

मेरी गलती, एक अंडरस्कोर है। parse_args()
RageCage

5

NaiveBot

NaiveBot यह सब "स्टॉक मार्केट" के लिए नया है। वह सिर्फ यह मानता है कि जब कीमत बढ़ रही है तो उसे खरीदना चाहिए, और जब कीमत कम हो जाती है तो उसे बेचना चाहिए। लेकिन वह नहीं है, वह अपनी आस्तीन ऊपर एक चाल है! वह कभी भी केवल आधा खरीदता है जो वह खर्च कर सकता है, और केवल आधा कभी बेचता है जो उसके पास है।

NaiveBot के लिए फ्रीवे के नीचे एक बॉक्स में कोई और नहीं रहता है!

<?php
$cur = array('price' => $argv[1], 'funds' => $argv[2], 'shares' => $argv[3]);

$cachefile = 'cache.json';
if( ! file_exists($cachefile) ) { $cache = array(); }
else { $cache = json_decode(file_get_contents($cachefile), true); }

// determine action
if( empty($cache) ) {
    $action = 'buy'; // always buy on first turn
} else if( $cur['price'] > $cache[count($cache)-1]['price'] ) {
    $action = 'buy';
} else if( $cur['price'] < $cache[count($cache)-1]['price'] ) {
    $action = 'sell';
} else {
    $action = 'hold';
}

// determine volume
if( $action == 'hold' ) {
    $volume = 0;
} else if( $action == 'buy' ) {
    // spend half my money on shares!
    $volume = floor(($cur['funds']/2)/$cur['price']);
} else if( $action == 'sell' ) {
    // sell half my shares!
    $volume = floor($cur['shares']/2);
}

// do a thing!
if( $action == 'hold' ) { echo 'W'; }
else if( $action == 'buy' ) { echo "B $volume"; }
else { echo "S $volume"; }
echo "\n";

$cache[] = $cur;
if( count($cache) == 50 ) { unlink($cachefile); } // wipe cache on last turn
else { file_put_contents($cachefile,json_encode($cache)); } // write cache

साथ चलाएं php Naivebot.php $1 $2 $3, cache.jsonअपने वर्तमान फ़ोल्डर में बनाता है ।


5

लाभ - हास्केल

  1. जब तक कीमत 1 / अधिकतम मूल्य है तब तक प्रतीक्षा करें
  2. सब कुछ खरीदें / बेचें
  3. ????
  4. फायदा!!!

import System.Environment (getArgs)

main = putStrLn . trade . map read =<< getArgs

trade :: [Integer] -> String
trade [p,m,s] -- not intended
  | p == 1 = "B" ++ (show m)
  | p == (fromIntegral $ (maxBound::Int) - 1) = "S" ++ (show s)
  | otherwise = "W"

के साथ संकलन करें ghc profit.hsऔर चलाएं ./profit price money stock

यदि यह पर्याप्त कुशल नहीं है, तो -O3ध्वज जोड़ें , हालांकि यह संभवतः ओवरकिल है: डी


संपादित करें:

"अनुकूलित", अब सब कुछ बेचता है जब कीमत के बराबर है Integer.MAX_VALUE


क्यों नहीं main = putStrLn . trade . map read =<< getArgs? कम शोर
recursion.ninja

@ वाशबर्न क्योंकि मैं भिक्षुओं के बारे में अच्छी तरह से नहीं पढ़ा हूं;)
थ्री एफएक्स

मुझे आशा है कि मेरी टिप्पणी से आपको कुछ नया सीखने में मदद मिली!
recursion.ninja

@ThreeFx इसे करने के लिए एक कार्यक्रम है cabal install pointfree, अब, हर कोई सोचता है कि आप नाश्ते के लिए मठरी खाएंगे।
शॉन डी

@ सीन धन्यवाद, मैं इसे
देखूंगा

4

WaitForCrash

संपादित करें: अवधारणा में निश्चित दोष

संपादित करें: अब लंबे लंबे int का उपयोग कर रहा है

यह मेरी पहली कोशिश है। यह वास्तव में सरल व्यवहार करता है और यह भेद करने के लिए एक हिस्सा रखता है कि क्या यह पहले दौर या बाद में एक है। पहले दौर में कुछ भी नहीं खो सकता है, इसलिए यह शेयर खरीदता है। यदि यह शेयर है तो यह उन्हें बेचता है। अगर अंत में कीमतों में गिरावट 10 पर आती है, तो यह फिर से खरीदेगा।

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    long long int share_price = strtoll(argv[1], NULL, 0);
    long long int money = strtoll(argv[2], NULL, 0);
    long long int shares_owned = strtoll(argv[3], NULL, 0);

    if(shares_owned > 1) {
        printf("S%lld\n", shares_owned - 1);
    } else if (shares_owned == 0 || share_price == 10) {
        printf("B%lld\n", money / share_price);
    } else {
        printf("W\n");
    }

    return 0;
}

संकलन: gcc waitforcrash.c -o waitforcrash

इसे चलाएं ./waitforcrash PRICE MONEY SHARES


आशा है कि आपको कोई आपत्ति नहीं है कि मैं BuyAndHold समाधान के आधार के रूप में उपयोग करने के लिए आपके कोड को स्वाइप कर चुका हूं। BTW लंबे लंबे ints, चेतावनियों से बचने के लिए% d को% Ld होने की आवश्यकता है (या क्या यह% lham है? न तो मुझे कोई चेतावनी देता है)।
ग्लेन रैंडर्स-पेहर्सन

ठीक है। हाँ, मेरे पास कोड में% lld था, उन्हें अपडेट में भूल गया होगा, ty।
ऑप्टोकॉपर

3

Earthquaker

सब कुछ खरीदने और बेचने के बीच विकल्प (लेकिन एक)। यह वास्तव में जीतने का लक्ष्य नहीं रखता है क्योंकि यह बाकी सभी को बाधित करता है।

using System;
using System.IO;

namespace Earthquaker
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length < 3)
                return;

            int stockPrice = int.Parse(args[0]);
            int money = int.Parse(args[1]);
            int stocks = int.Parse(args[2]);

            bool shouldBuy = true;

            if (stocks != 0)
            {
                StreamReader sr = new StreamReader("brain.txt");
                if (sr.ReadLine() == "B")
                    shouldBuy = false;
                else
                    shouldBuy = true;
                sr.Close();
            }

            if (shouldBuy)
                Console.Write("B" + (money / stockPrice));
            else
                Console.Write("S" + (stocks - 1));

            StreamWriter sw = new StreamWriter("brain.txt", false);
            sw.Write(shouldBuy ? 'B' : 'S');
            sw.Close();
        }
    }
}

के साथ संकलित करें csc Earthquaker.cs। के साथ भागो Earthquaker


.Net है System.IO.File.ReadAllTextऔर WriteAllText, इसलिए आप अपने इतिहास को थोड़ा सा ट्रैक कर सकते हैं।
पीटर टेलर

यदि इसकी brain.txtफ़ाइल नहीं मिली तो यह क्रैश हो जाता है ।
पीटर टेलर

3

मंकी ट्रेडर (जावा में)

एक कहावत है कि बंदर अच्छे व्यापारी होते हैं। मैं प्रमाण बनाता हूं। "खरीदने" और "बेचने" के बीच निर्णय पूरी तरह से यादृच्छिक हैं।

import java.math.BigInteger;
import java.util.Random;

public class MonkeyTrader {
    /**
     * @param args the command line arguments containing the current 
     * market value, our current money, and our current shares
     */
    public static void main(String[] args) {
        BigInteger marketValue = new BigInteger(args[0]);
        BigInteger myMoney = new BigInteger(args[1]);
        BigInteger myShares = new BigInteger(args[2]);
        Random random=new Random();

        switch (random.nextInt(2)) {
        case 0:
            System.out.println("B" + myMoney.divide(marketValue));
            break;
        case 1:
            System.out.println("S" + myShares);
            break;
        }
    }
}

3

IntelliTrader

1 राउंड वह अपने शेयरों को बेच देगा यदि वे एक अच्छी कीमत हैं: $ 80 या अधिक। फिर वह बेच देगा अगर कीमत वही है या वह पिछले मूल्य से बेहतर है जो उसने बेची है, तो खरीद लें यदि कीमत उसी या उससे कम है जिसे उसने खरीदा था।

IntelliTrader.java

import java.io.*;
import java.math.BigInteger;
import java.util.Properties;

public class IntelliTrader {

    private static final String ROUND_NUM = "roundNum";
    private static final String LAST_BUY = "lastBuy";
    private static final String LAST_SELL = "lastSell";
    private static final String FILE = "IntelliTrader/memory.txt";

    private Properties memory;
    private int roundNum;

    private IntelliTrader(Properties memory) {
        this.memory = memory;
        roundNum = new Integer(memory.getProperty(ROUND_NUM, "0"));
    }

    public String evaluate(BigInteger market, BigInteger money, BigInteger shares) {
        String command = "W";
        if (roundNum == 0) {
            if (market.intValue() > 80) {
                command = sell(market, shares);
            } else {
                command = buy(market, money);
            }
        } else {
            if (market.compareTo(new BigInteger(memory.getProperty(LAST_SELL, "0"))) >= 0) {
                command = sell(market, shares);
            } else if (market.compareTo(new BigInteger(memory.getProperty(LAST_BUY, "999999999"))) <= 0) {
                command = buy(market, money);
            }
        }
        return command;
    }

    private String buy(BigInteger cost, BigInteger money) {
        memory.setProperty(LAST_BUY, cost.toString());
        return "B" + money.divide(cost).toString();
    }

    private String sell(BigInteger cost, BigInteger shares) {
        memory.setProperty(LAST_SELL, cost.toString());
        return "S"+shares.toString();
    }


    public static void main(String[] args) {    
        BigInteger marketValue = new BigInteger(args[0]);
        BigInteger myMoney = new BigInteger(args[1]);
        BigInteger myShares = new BigInteger(args[2]);

        Properties memory = new Properties();
        try {
            memory.load(new FileReader(FILE));
        } catch (IOException e) {
            //ignore, file probably doesn't exist yet
        }

        int roundNum = new Integer(memory.getProperty(ROUND_NUM, "0"));
        if (roundNum > 49) {
            roundNum = 0;
            memory.setProperty(ROUND_NUM, "0");
            memory.setProperty(LAST_BUY, "0");
            memory.setProperty(LAST_SELL, "0");
        }

        IntelliTrader it = new IntelliTrader(memory);
        String command = it.evaluate(marketValue, myMoney, myShares);
        System.out.println(command);

        roundNum++;
        memory.setProperty(ROUND_NUM, ""+roundNum);
        try {
            memory.store(new FileWriter(FILE), "IntelliTrader memory properties");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

जेवैक इंटेलीट्रेडर के साथ संकलन । Java -cp "IntelliTrader" IntelliTrader के साथ चलाएँ


मेरे परीक्षणों में यह दूसरा सबसे अच्छा व्यापारी लगता है।
पीटर टेलर

2

theAnswerOfLifeIs42.py

मेरा कार्यक्रम 42 नंबर को प्यार करता है

नियम सरल है: मैं या तो 42 स्टॉक खरीद सकता हूं या 42 स्टॉक बेच सकता हूं।

import sys
price, money, shares = [int(arg) for arg in sys.argv[1:]]

if money>42*price:
 print "B 42"
else:
 print "S 42"

2

LeesonLearnt v1.1 (जावा, रूढ़िवादी)

चूंकि नियम में बदलाव का मतलब है कि हम अब कुछ शेयरों के साथ शुरू करते हैं, इसलिए अब कोई गारंटी नहीं है कि यह पहला कदम है, इसलिए मैंने पहली बारी के लिए विशेष मामले को हटाकर इसे सरल कर दिया है।

import java.math.BigInteger;

public class LeesonLearnt {
    private static final BigInteger THRESHOLD = new BigInteger("100");

    public static void main(String[] args){
        BigInteger price = new BigInteger(args[0]);
        BigInteger capital = new BigInteger(args[1]);
        BigInteger shareholding = new BigInteger(args[2]);

        BigInteger affordable = capital.divide(price);

        // In the long run, the shares will probably lose all their value.
        // But if they're cheap, buying them will pump them and they can be sold at a profit.
        // The target amount of our value held in shares varies exponentially with their price.
        BigInteger targetShareholding = price.compareTo(THRESHOLD) > 0
            ? BigInteger.ZERO
            : affordable.add(shareholding).shiftRight(price.intValue() - 1);
        if (targetShareholding.compareTo(shareholding) <= 0) {
            System.out.println("S" + shareholding.subtract(targetShareholding));
        }
        else {
            BigInteger diff = targetShareholding.subtract(shareholding);
            System.out.println("B" + diff.min(affordable));
        }
    }
}

के रूप में आमंत्रित किया है

java -cp LeesonLearnt LeesonLearnt <price> <capital> <shareholding>

1

डॉलर की लागत Averager - पायथन 3

यह रणनीति एक निश्चित धनराशि (मनमाने ढंग से 150 पर सेट) को खरीदकर डॉलर की लागत औसत का उपयोग करने का प्रयास करती है (ताकि वह संभवतः अपने अधिकांश धन का उपयोग अंत तक कर सके) प्रत्येक बारी।

import sys
price, money, shares = [int(arg) for arg in sys.argv[1:]]
target_per_day = 150
buy = round(min(target_per_day, money) / price)
if buy * price > money:
    buy -= 1
if buy > 0:
    print("B" + str(buy))
else:
    print("W")

1

कैश इज़ किंग - पायथन 2 या 3

यह आदमी शेयर बाजार के बारे में बहुत निराशावादी है। वह अपने पैसे को नकदी में रखना चाहेगा, जहां वह अपने गद्दे के नीचे सुरक्षित रख सकता है।

import sys
shares = int(sys.argv[3])
if shares > 0:
    print("S" + str(shares))
else:
    print("W")

1

धीमी और स्थिर

जब तक इसके पास पैसा है, यह 165 डॉलर मूल्य के शेयर खरीदता है। अन्यथा अधिक शेयर प्राप्त करने, अधिक शेयर खरीदने के लिए यह अपने सभी शेयरों को बेचता है। 50 वें दौर में यह सभी शेयरों को बेचना सुनिश्चित करता है, क्योंकि अंत में हम नकद चाहते हैं।

import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.math.BigInteger;
import java.nio.file.Files;
import java.nio.file.Paths;

public class SlowAndSteady{
    public static void main(String[] args) {
        BigInteger price = new BigInteger(args[0]);
        BigInteger cash= new BigInteger(args[1]);
        long shares= Long.parseLong(args[2]);
        BigInteger number = new BigInteger("165");
        String count = "0";


        try {
            count = new String(Files.readAllBytes(Paths.get("counter.txt")));
        } catch (IOException e) {

        }

        int c = Integer.parseInt(count)+1;

        if (c >= 50)
        {
            System.out.println("S" + shares);
            c=0;
        }

        else if(cash.compareTo(number) > 0)     System.out.println("B" + (number.divide(price)));

        else System.out.println("S" + shares);


        try {
            Writer wr = new FileWriter("counter.txt");
            wr.write(Integer.toString(c));
            wr.close();
        } catch (IOException e) {
        }
   }
}

जेवैक स्लोवांडस्टेडी.जवा के साथ संकलन। Java -cp के साथ "SlowAndSteady" SlowAndSteady चलाएं। काउंटर को राउंड के बीच रीसेट करना चाहिए, लेकिन यदि फ़ाइल हटा दी जाती है, तो यह भी काम करेगा।


1

BuyHighSellLow

बाजार का इतिहास ट्रैक करता है और कीमत कम होने पर खरीदता है और अधिक होने पर बेचता है।

import sys

storage = 'BuyHighSellLow'
turn = 0
turns = 50
max_start_price = 150
limit = 0.25

price = int(sys.argv[1])
money = int(sys.argv[2])
shares = int(sys.argv[3])

# Calculate average price
with open(storage+'/history', mode='a') as f:
            pass # Create file if it doesn't exist
with open(storage+'/history', mode='r') as f:
    values = list((int(line) for line in f))
    turn = len(values) + 1
    if turn > turns: turn = 1
    if turn == 1:
            average = max_start_price + 1
            turn = 1
    else:
            average = sum((value / turn for value in values))

# Buy low and sell high
if price < average:
    print('B' + str(int(limit * money / price)))
elif price > average:
    print('S' + str(int(limit * shares)))
else:
    print('W')

# Save history
if turn == 1: mode='w'
else: mode = 'a'
with open(storage+'/history', mode=mode) as f:
    print(price, file=f)

साथ दौड़ो:

python3 BuyHighSellLow/buyhighselllow.py

1

समय सही है - पायथन 3

मैं ऊब गया था इसलिए मैंने एक और एंट्री लिखी ...

यह युवा उद्यमी अपने जीवन को घड़ी द्वारा जीते हैं। समय सही होने पर वह निर्णय लेता है। उन्होंने गुस्से में फ्रेंच के संदर्भ से बाहर का उपयोग भी किया ...;)

चलाएँ:

python3 timeisright.py [arg1] [arg2] [arg3]

कोड:

import sys, time

price = int(sys.argv[1])
money = int(sys.argv[2])
shares = int(sys.argv[3])

lheure = int(time.time())

if lheure % 3 == 0:
    print('S'+str(int(shares/4)))
elif lheure % 3 == 1:
    print('B'+str(int(money/4*price)))
else:
    print('W')

1

ओल 'टाइमर - फोरट्रान 77

यह वृद्ध व्यक्ति ऑफिस क्लर्क के रूप में काम करने के साठ साल बाद अपनी पेंशन बर्बाद करने जा रहा है। अपने बुढ़ापे के दौरान, हालांकि, वह काफी अंधा हो गया, इसलिए वह केवल प्रत्येक तर्क की पहली संख्या देख सकता है, इसलिए वह कीमत का अनुमान लगाता है। उनका तरीका वॉल्ट के समान है, सिवाय ओल 'टाइमर के कुछ और लापरवाह है।

फोरट्रान मुद्रण के साथ समस्याओं के कारण, मैंने पायथन कार्यक्रम लिखा है जो मदद करेगा। कार्यक्रम आपूर्ति की गई दलीलों को लेता है और उन्हें फोरट्रान कार्यक्रम के माध्यम से पाइप करता है। फिर, पायथन कार्यक्रम अपेक्षित प्रारूप में आउटपुट को सुधारता है।

संकलित करें:

gfortran oltimer.for -o oltimer.exe

चलाएँ:

python3 assistant.py [arg1] [arg2] [arg3]

अजगर सहायक कोड:

from subprocess import Popen, PIPE
import sys, re

ret = Popen('./oltimer.exe '+sys.argv[1]+' '+sys.argv[2]+' '+sys.argv[3], stdout=PIPE, shell=True).communicate()[0].decode('utf-8')
value=re.findall(r'\d+',ret)

if 'W' in ret:
     print('W')

elif 'B' in ret:
     print('B'+str(value[0]))

elif 'S' in ret:
     print('S'+str(value[0]))

फोरट्रान मुख्य कोड:

      PROGRAM OLTIMER
C DEFINE VARIABLES
          INTEGER :: PRICE
          INTEGER :: STOCK
          INTEGER :: MONEY
          INTEGER :: INTBUFFER
          CHARACTER :: BUFFER
C GET CMD ARGUMENTS & CONVERT TO INT
          CALL getarg(1, BUFFER)
          READ (BUFFER, '(i10)') PRICE
          CALL getarg(2, BUFFER)
          READ (BUFFER, '(i10)') MONEY
          CALL getarg(3, BUFFER)
          READ (BUFFER, '(i10)') STOCK
C EVALUATE SITUTATION AND MAKE DECISION
          IF (PRICE.LT.5) THEN
            IF (MONEY.GT.0) THEN
                INTBUFFER=(MONEY*50)/(5-PRICE)
                PRINT*,'B',INTBUFFER
            ELSE
                PRINT*,'W'
            END IF
          ELSE
            IF (PRICE.GT.9) THEN
                IF (STOCK.GT.0) THEN
                    INTBUFFER=STOCK/(PRICE-9)
                    PRINT*,'S',INTBUFFER
                ELSE
                    PRINT*,'W'
                END IF
            ELSE
                PRINT*,'W'
            END IF
          END IF      
      END PROGRAM

1
यह देखते हुए कि आपको वैसे भी अजगर की ज़रूरत है, और यह कि पायथन में अन्य उत्तर हैं, लेकिन फोरट्रान में कोई भी नहीं है, क्या आपको नहीं लगता कि पायथन में पूरी बात को लागू करने और ओपी को स्थापित करने वाले कंपाइलरों के बोझ को कम करना होगा?
पीटर टेलर

@ पैटर मैं लेकिन मुझे लगा कि यह पूरी तरह से अलग भाषा है और यह कैसे प्रदर्शन करती है, यह देखना मजेदार होगा।
बीटा डिके

0

टेस्ट 1 व्यापारी

public class Test1 {

    public static void main(String[] args){
        int marketValue = Integer.parseInt(args[0]);
        int myMoney = Integer.parseInt(args[1]);
        int myShares = Integer.parseInt(args[2]);

        //Buy 10 if we don't have any.
        if(myShares <= 0){
            System.out.println("B10");
        }else{
            System.out.println("S1");
        }
    }
}

साथ javac Test1.javaचलाने के लिए संकलन करेंjava -cp "Test1" Test1


0

हेजहोग - python2.7

यह ज्यादातर नाम आरक्षित करने के लिए है

from __future__ import print_function
from sys import argv

storage = 'prices.txt'
price,cash,shares = map(long, argv[1:])
turn = 1
buy = lambda x: print('B%d' % long(x))
sell = lambda x: print('S%d' % long(x))
cashtoshares = lambda c: long(c/price)
TURN,PRICE,CASH,SHARES=range(4)

try:   
    data = [map(long, line.split()) for line in open(storage)]
    if data:
        turn = data[-1][TURN] + 1
except IOError:
    pass
with open(storage, 'a') as pricelist:
    pricelist.write('%d %d %d %d\n' % (turn, price, cash, shares))

if turn == 1:
    buy(cashtoshares(cash)) # convert all cash into shares
elif price == 1:
    buy(cashtoshares(cash)) # cannot buy at a better deal
elif price < 10:
    buy(cashtoshares(cash/2))
elif shares < 10:
    buy(cashtoshares(cash/2))
else:
    sell(shares/2)

ऐसे दोड़ो

python hedgehog.py PRICE CASH SHARES

0

BuyAndSell - सी

इसी तरह लेकिन टॉमी की नकल नहीं। जितना संभव हो उतना घबराहट और सब कुछ बेचने के बीच विकल्प। Earthquaker का लगभग एक डुप्लिकेट जो एक शेयर को बरकरार रखता है जबकि BuyAndSell सभी शेयर बेचता है। BuyAndSell कोई कार्रवाई नहीं करता है जब इसके पास बेचने के लिए कोई शेयर नहीं है, लेकिन एक शेयर खरीदने के लिए पर्याप्त पैसा नहीं मिला है।

/* BuyAndSell
 * Code revised from OptoKopper's WaitForCrash.c and my BuyAndHold.c
 * Alternates between buying as many shares as possible and selling everything
 * Run it as ./buyandsell PRICE MONEY SHARES
 */
int main(int argc, char *argv[]) {
    long long int share_price = strtoll(argv[1], NULL, 0);
    long long int money = strtoll(argv[2], NULL, 0);
    long long int shares = strtoll(argv[3], NULL, 0);

    if (money >= share_price) {
        printf("B%lld\n", money / share_price);
    } else {
        if (money == 0) {
            printf("S%lld\n", shares);
        } else {
            printf("W\n");
        }
    }

    return 0;
}

"Gcc buyandsell.c -o buyandell" के साथ संकलन करें

"./Buyandsell PRICE MONEY SHARES के रूप में चलाएं


0

कण्ठ सोरोस

price = ARGV.shift
money = ARGV.shift
stock = ARGV.shift
if price*10<money
  puts "B10"
else
  puts "S#{stock}"
end

धीरे-धीरे खरीदता है, बाजार को क्रैश करने की कोशिश में सब कुछ बेचता है।

साथ दौड़ो:Soros.rb price money stock


1
यह स्पष्ट रूप से प्रश्न पाठ में कहता हैDo not intentionally create programs to crash the simulation.
बीटा डेके

@ BetaDecay का अर्थ है कि मैं कंट्रोलर को क्रैश करने की कोशिश नहीं करता। बाजार को क्रैश करने की कोशिश करना खेल का हिस्सा है।
spocot

@spocot ओह, मैंने सोचा था कि आप बाजार को क्रैश करने के लिए कार्यक्रम नहीं बनाने का मतलब है। आपको अधिक भ्रम को रोकने के लिए अलग से वाक्यांश बनाना चाहिए।
बीटा क्षय
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.