Используйте словарь для хранения предполагаемых значений
// dictionary
const guessDictionary = {};
//guess higher or lower logic
function guessHighOrLow(min, max){
min = Math.ceil(min); // eg: 40
max = Math.floor(max); // eg: 99
// generating a unique key for dictionary eg: "40-99"
const key = [min, max].join('-');
// generates and store computerGuess if not in dictionary
if(guessDictionary[key] === undefined) {
guessDictionary[key] = Math.floor(Math.random() * (max - min + 1)) +
min;
}
// always return from dictionary
return guessDictionary[key];
}
//Computer generates number from 1-99
function generateFirstGuess(){
randomNumber = Math.floor(Math.random() * 100);
return randomNumber;
}
//computer guesses higher if guess too low
function guessHigher(){
alert(guessHighOrLow(randomNumber, 100));
}
function guessLower(){
alert (guessHighOrLow(1, randomNumber));
}
Здесь существует две отдельных проблемы:
Проблема 1 довольно легка отдельно. Просто сделайте что-то как:
git clone git://example.com/foo.git
cd foo
git remote add upstream git://example.com/foo.git
git remote rm origin
git remote add origin ssh://.../my-forked-foo.git
git push origin
Можно затем обычно работать над разветвленным репозиторием. Когда Вы хотите объединиться в восходящих изменениях, работать:
git pull upstream master
Что касается проблемы 2, одна опция состоит в том, чтобы использовать подмодули. Для этого, CD в Ваш основной проект, и выполненный:
git submodule add ssh://.../my-forked-foo.git local/path/for/foo
Если я использую подмодули мерзавца, что я должен знать?
Можно найти, что подмодули мерзавца время от времени немного хитры. Вот некоторые вещи иметь в виду:
Можно работать приблизительно (4) до некоторой степени при помощи псевдонима, созданного одним из моих коллег:
git config --global alias.pull-recursive '!git pull && git submodule update --init'
... и затем выполнение:
git pull-recursive
Если подмодули мерзавца так хитры, каковы преимущества?
подмодули мерзавца не для меня.Что дальше?
Если Вы не хотите использовать подмодули мерзавца, Вы могли бы хотеть изучить стратегию поддерева слияния мерзавца. Это сохраняет все в одном репозитории.
Что, если восходящий репозиторий использует Подверсию?
Это довольно легко, если Вы знаете, как использовать мерзавца svn:
git svn clone -s https://example.com/foo
cd foo
git remote add origin ssh://.../my-forked-foo.git
git push origin
Затем настройте локальное ответвление отслеживания в мерзавце.
git push origin master:local-fork
git checkout -b local-fork origin/local-fork
Затем для слияния от восходящего потока работайте:
git svn fetch
git merge trunk
(Я не протестировал этот код, но это более или менее, как мы поддерживаем один подмодуль с восходящим репозиторием SVN.)
Не используйте мерзавца svn переоснова, потому что она сделает очень трудным использовать подмодуль мерзавца в родительском проекте, не теряя данные. Просто рассматривайте ответвления Подверсии как зеркала только для чтения восходящего потока и слияние от них явно.
Если необходимо получить доступ к восходящему репозиторию Подверсии на другой машине, попробуйте:
git svn init -s https://example.com/foo
git svn fetch
Необходимо затем смочь объединить изменения от восходящего потока как прежде.
Я озирался немного больше и наткнулся на Оплетку. Это - инструмент, который автоматизирует ответвления поставщика в Мерзавце. Это может использовать Мерзавца или SVN repos.
Путем проверки через источник я узнал, что он использует стратегию поддерева. И, кажется, делает это действительно простым! Плюс, это, кажется, выполняет все мои требования!
Прежде чем я буду вскакивать и буду использовать его: у кого-либо здесь есть опыт с Оплеткой? Я хотел бы узнать о возможных недостатках, если существует кто-либо. Кроме того, если Вы не использовали Оплетку, но имеете некоторые экспертные знания в Мерзавце, что Вы думаете об этом на первый взгляд?
Я использую подмодули мерзавца для отслеживания допускающих повторное использование приложений в моих проектах Django, но это довольно грязно в конечном счете.
Это грязно для развертывания, потому что Вы не можете получить чистый архив целого дерева (с подмодулями) использование архива мерзавца. Существуют некоторые приемы, но ничто идеальное. Кроме того, обновление подмодуля mecanism не настолько хорошо для работы с ответвлениями подмодулей.
Вам, возможно, придется смотреть на virtualenv и зернышко, потому что у них были некоторые недавние улучшения для работы с внешними репозиториями.
зернышко: http://pip.openplans.org/ и работающий с pip/virtualenv: http://www.b-list.org/weblog/2008/dec/15/pip/