LFE Style Guide
3 Formatting
3.1 Spelling and Abbreviations
You should use correct spelling in your comments, and most importantly in your identifiers.
English is the Lingua Franca of programming, but both Brittish English and American English spellings are acceptable. Do be consistent within single projects, though -- don't mix spellings.
You should use only common and domain-specific abbreviations, and should be consistent with these abbreviations. You may abbreviate lexical variables of limited scope in order to avoid overly-long symbol names.
If you're not sure, consult a dictionary, Google for alternative spellings, or ask a local expert.
3.2 Line length
You should format source code so that no line is longer than 80 characters.
Some line length restriction is better than none at all. Old text terminals used to make 80 columns the standard, which was inherited from punchcard character widths. That, in turn, was inherited from automated loom card widths. We continue to recommend this width for several reasons:
- When printing code on A4 or US Letter paper sizes, 80-character width source files can be printed without requiring a magnifying glass to read.
- There are times when one does not have the luxury of a wide-screen monitor (e.g., debugging code on a console in a data center), and at those times, we are quite grateful to be looking at code that is 80 characters wide at most.
- Using modern text editors that support multiple panes/frames, one may have 3 to 4 files open side-by-side in a single window, thanks to the 80-char limit.
3.3 Indentation
Indent your code the way a properly configured GNU Emacs does or the way that Sublime Text with the paredit plugin does.
Maintain a consistent indentation style throughout a project.
Indent carefully to make the code easier to understand.
There are several projects that assist with Lisp-indentation in various text editors:
- Emacs:
cl-indent
- Sublime Text:
lispindent
- Vim: various (see the CLiki page)
You should use the indentation provided by these packages (though note that lispindent for Sublime Text does get a few things wrong).
Use indentation to make complex function applications easier to read. When an application does not fit on one line or the function takes many arguments, consider inserting newlines between the arguments so that each one is on a separate line. However, do not insert newlines in a way that makes it hard to tell how many arguments the function takes or where an argument form starts and ends.
Don't do this:
;; Bad
(do-something first-argument second-argument (lambda (x)
(frob x)) fourth-argument last-argument)
Do this instead:
;; Better
(do-something first-argument
second-argument
#'(lambda (x) (frob x))
fourth-argument
last-argument)
3.4 File Header
What to include in the top of source files:
- Module descriptions.
- Copyright for special files.
- Authorship for special files.
What should not be included in the file headers:
- Copyright and licesning info that is the same as the
LICENSE
file. - General authorship info -- use your VCS for that.
Every source file should begin with a brief description of the contents of that file.
After that description, every regular LFE module should start the code
itself with a (defmodule ...)
form. Include files do not have
(defmodule ...)
, but should have a series of (defmacro ...)
,
(defrecord ...)
, etc., forms instead.
In general, copyright and licensing should be listed in the LICENSE
file
at the root of the project, not in the file header. Exceptions should be
made for files that are meant to be distributed independently (e.g.,
scripts, binaries, etc.) or for files that have a differing license from the
rest of the project (for whatever reason).
Each comment line of the file header should be prepended with four (4) semicolons:
;;;; This module does some truly amazing stuff. For example, ...
;;;; ...
3.5 Vertical White Space
You should include one blank line between top-level forms, such as function definitions.
Exceptionally, blank lines can be omitted between simple, closely related defining forms of the same kind, such as a group of related constant definitions.
(defun pi () (* #x12B9B0A1 (math:pow 10 -8)))
(defun golden-ratio () (* #x397BEEF356E6C4 (math:pow 10 -16)))
(defun e ()
(* #xB9FE0D492C1F1BCA8C9CB776B21EA1C8A94019588B (math:pow 10 -50)))
Blank lines can be used to separate parts of a complicated function.
Generally, however, you should break a large function into smaller ones
instead of trying to make it more readable by adding vertical space. If you
can't, you should document with a ;;
comment what each of the separated
parts of the function does.
You should strive to keep top-level forms, including comments but excluding the documentation string, of appropriate length -- preferrably short. Forms extending beyond a single page should be rare and their use should be justfied.
3.6 Horizontal White Space
It is considered very bad style to include extra horizontal whitespace before or after parentheses or around symbols.
You should not place right parentheses by themselves on a line. A set of consecutive trailing parentheses need to appear on the same line.
Don't do this:
;; Very Bad
( defun factorial
( (0) 1)
( (n) (when (> n 0))
( * n ( factorial (- n 1) )
)
)
)
Instead, do this:
;; Better
(defun factorial
((0) 1)
((n) (when (> n 0))
(* n (factorial (- n 1)))))
You should use only one space between forms.
You should not use spaces to vertically align forms in the middle of consecutive lines. An exception is made when the code possesses an important yet otherwise not visible symmetry that you want to emphasize.
;; Bad
(let* ((low 1)
(high 2)
(sum (+ (* low low) (* high high))))
...)
;; Better
(let* ((low 1)
(high 2)
(sum (+ (* low low) (* high high))))
...)
You should align nested forms if they occur across more than one line.
;; Bad
(defun munge (a b c)
(* (+ a b)
c))
;; Better
(defun munge (a b c)
(* (+ a b)
c))
You should set your editor to avoid inserting tab characters in the files you
edit. Tabs cause confusion when editors disagree on how many spaces they
represent. In Emacs, do (setq-default indent-tabs-mode nil)
.


An AGS-wrapper is a simple wrapper for an another library created by another team/developper and which allows you to benefit from the advantages of a dependency manager.
How to create a new AGS wrapper ?
Procedure
-
Create a new folder
./ags-wrapper-xxx
. Replace xxx with the name of the library to wrapped. -
Add a
package.json
at the root of this new folder, and fill properties with new values. When you fill this file, respect the AGS conventions. -
Add a
README.md
to describe the wrapper. Copy this document from another README wrapper (see https://github.com/autoit-gui-skeleton/ags-wrapper-json#readme). -
Add the files of library to wrapped, and fill the property
AGS.wrapper.main
with the name of main library. It can be usefull to create a new AutoIt fill in which we will add all the directives included in order to facilitate its inclusion. In other words by including this file, we will add all the elements of the library. Don’t forget to add the#include-once
directive. - Create a local git repository with a remote origin on Github (or another).
git init git add README.md git commit -m "Init repository" git remote add origin https://github.com/autoit-gui-skeleton/ags-wrapper-xxx.git git push -u orgin master
-
Commit and push another files and when the release is ready change the number version (in respect of Semantic versioning) in package.json, and add a git tag
1.x.x
. - Finally publish the project with npm.
npm login npm publish --access public
AGS wrapper conventions
To describe an AGS wrapper and its dependencies we naturally use the package.json
file, specific to the Node.js ecosystem. You can find more information about this file, and how to fill it here : https://yarnpkg.com/lang/en/docs/package-json/.
At the root of this new folder, add a package.json
as follows.
{
"name": "@autoit-gui-skeleton/ags-wrapper-xxx",
"version": "1.0.0",
"description": "AGS package for the library xxx, created by ???. This library provides features to ...",
"author": "v20100v<EMAIL_ADDRESS>(https://github.com/v20100v)",
"contributors": [
"v20100v<EMAIL_ADDRESS>(https://github.com/v20100v)"
],
"license": "MIT",
"keywords": [
"AGS",
"AutoIt",
"AutoIt-GUI-Skeleton",
"AGS-wrapper",
"???"
],
"homepage": "https://autoit-gui-skeleton.github.io/",
"repository": {
"url": "https://github.com/autoit-gui-skeleton/ags-wrapper-xxx.git",
"type": "git"
},
"bugs": {
"url": "https://github.com/autoit-gui-skeleton/ags-wrapper-xxx/issues"
},
"dependencies": {
"@autoit-gui-skeleton/ags-wrapper-binary-call": "^1.0.2"
},
"AGS": {
"framework": {
"version": "1.0.0"
},
"AutoIt": {
"version": "<IP_ADDRESS>"
},
"wrapper": {
"main": "xxx.au3"
}
}
}
It is appreciable to add examples of uses in the dedicated directory ./examples
.
Do not forget to cite the main authors of the library which been wrapped.
Add a main wrapper file
When we create a wrapper for a library, there is still not just one AutoIt file. In order to simplify, we can create a simple file in order to include all the files of the library in a single call of directive #include
.
For example :
; ./xxx.au3
#include-once
#include "File-one.au3"
#include "File-two.au3"
#include "File-three.au3"
(...)
Check the library is available
In an empty folder, run the following command to test the install the wrapper :
yarn add @autoit-gui-skeleton/ags-wrapper-xxx --modules-folder vendor
When Yarn resolving packages, if the package is not available you get an unexpected error like this :
An unexpected error occurred: “https://registry.yarnpkg.com/@autoit-gui-skeleton%2fags-wrapper-xxx: Not found”.
And if the package is available, is installed into vendor
folder with all its dependencies.
Here we go !
Continue reading ?


Cut the Cake
问题描述 :
The cake looks rectangular, viewing from above (Figure C-1). As exemplified in Figure C-2, the cake will iteratively be cut into pieces, where on each cut exactly a single piece is cut into two smaller pieces. Each cut surface must be orthogonal to the bottom face and must be orthogonal or parallel to a side face. So, every piece shall be rectangular looking from above and every side face vertical.
Figure C-1: The top view of the cake
Figure C-2: Cutting the cake into pieces
Piece sizes in Figure C-2 vary significantly and it may look unfair, but you don’t have to worry. Those guests who would like to eat as many sorts of cakes as possible often prefer smaller pieces. Of course, some prefer larger ones.
Your mission of this problem is to write a computer program that simulates the cutting process of the cake and reports the size of each piece.
输入:
n w d
p1 s1
…
pn sn
The first line starts with an integer n that is between 0 and 100 inclusive. It is the number of cuts to be performed. The following w and d in the same line are integers between 1 and 100 inclusive. They denote the width and depth of the cake, respectively. Assume in the sequel that the cake is placed so that w and d are the lengths in the east-west and north-south directions, respectively.
Each of the following n lines specifies a single cut, cutting one and only one piece into two. pi is an integer between 1 and i inclusive and is the identification number of the piece that is the target of the i-th cut. Note that, just before the i-th cut, there exist exactly i pieces. Each piece in this stage has a unique identification number that is one of 1, 2, …, i and is defined as follows:
* The earlier a piece was born, the smaller its identification number is.
* Of the two pieces born at a time by the same cut, the piece with the smaller area (looking from above) has the smaller identification number. If their areas are the same, you may define as you like the order between them, since your choice in this case has no influence on the final answer.
Note that identification numbers are adjusted after each cut.
si is an integer between 1 and 1000 inclusive and specifies the starting point of the i-th cut. From the northwest corner of the piece whose identification number is pi, you can reach the starting point by traveling si in the clockwise direction around the piece. You may assume that the starting point determined in this way cannot be any one of the four corners of the piece. The i-th cut surface is orthogonal to the side face on which the starting point exists.
The end of the input is indicated by a line with three zeros.
输出:
n w d
p1 s1
…
pn sn
The first line starts with an integer n that is between 0 and 100 inclusive. It is the number of cuts to be performed. The following w and d in the same line are integers between 1 and 100 inclusive. They denote the width and depth of the cake, respectively. Assume in the sequel that the cake is placed so that w and d are the lengths in the east-west and north-south directions, respectively.
Each of the following n lines specifies a single cut, cutting one and only one piece into two. pi is an integer between 1 and i inclusive and is the identification number of the piece that is the target of the i-th cut. Note that, just before the i-th cut, there exist exactly i pieces. Each piece in this stage has a unique identification number that is one of 1, 2, …, i and is defined as follows:
* The earlier a piece was born, the smaller its identification number is.
* Of the two pieces born at a time by the same cut, the piece with the smaller area (looking from above) has the smaller identification number. If their areas are the same, you may define as you like the order between them, since your choice in this case has no influence on the final answer.
Note that identification numbers are adjusted after each cut.
si is an integer between 1 and 1000 inclusive and specifies the starting point of the i-th cut. From the northwest corner of the piece whose identification number is pi, you can reach the starting point by traveling si in the clockwise direction around the piece. You may assume that the starting point determined in this way cannot be any one of the four corners of the piece. The i-th cut surface is orthogonal to the side face on which the starting point exists.
The end of the input is indicated by a line with three zeros.
样例输入:
3 5 6 1 18 2 19 1 2 3 4 1 1 1 2 1 3 1 0 2 5 0 0 0
样例输出:
4 4 6 16 1 1 1 1 10
2012 Multi-University Training Contest 3
1009题
没看到后来加的说明，以为都是矩形区域，直接AC了…………
#include <cstdio> #include <cstring> const int MAXN = 1005; int left[3][MAXN][MAXN], right[3][MAXN][MAXN], top[3][MAXN][MAXN]; char a[MAXN][MAXN]; inline int min(const int &x, const int &y) { return x < y ? x : y; } inline int max(const int &x, const int &y) { return x > y ? x : y; } int main() { int t; int n, m; scanf("%d", &t); memset(a, 0, sizeof(a)); for(int cas=1;cas<=t;++cas) { scanf("%d%d",&n,&m); for(int i=1;i<=n;++i) { scanf("%s", a[i]+1); } memset(left, 0, sizeof(left)); memset(right, 0, sizeof(right)); memset(top, 0, sizeof(top)); for(int i=1;i<=n;++i) { for(int j=1;j<=m;++j) { if(a[i][j] == 'B') { top[0][i][j] = 0; top[1][i][j] = top[1][i-1][j] + 1; left[0][i][j] = 0; left[1][i][j] = left[1][i][j-1] + 1; } else { top[0][i][j] = top[0][i-1][j] + 1; top[1][i][j] = 0; left[0][i][j] = left[0][i][j-1] + 1; left[1][i][j] = 0; } if(a[i][j] == a[i-1][j]) { top[2][i][j] = 1; } else { top[2][i][j] = top[2][i-1][j] + 1; } if(a[i][j] == a[i][j-1]) { left[2][i][j] = 1; } else { left[2][i][j] = left[2][i][j-1] + 1; } } for(int j=m;j>=1;--j) { if(a[i][j] == 'B') { right[0][i][j] = 0; right[1][i][j] = right[1][i][j+1] + 1; } else { right[0][i][j] = right[0][i][j+1] + 1; right[1][i][j] = 0; } if(a[i][j] == a[i][j+1]) { right[2][i][j] = 1; } else { right[2][i][j] = right[2][i][j+1] + 1; } } } int ans = 4; int maxLeft[3], maxRight[3]; for(int j=1;j<=m;++j) { for(int i=1;i<=n;++i) { for(int k=0;k<3;++k) { if(top[k][i][j] == 1) { maxLeft[k] = left[k][i][j]; maxRight[k] = right[k][i][j]; } else { maxLeft[k] = min(maxLeft[k], left[k][i][j]); maxRight[k] = min(maxRight[k], right[k][i][j]); } ans = max(ans, (maxRight[k] + maxLeft[k] - 1) * 2 + top[k][i][j] * 2); } } } printf("Case #%d: %d\n", cas, ans); } return 0; }
解题转自：http://blog.csdn.net/cyberzhg/article/details/7815384
原来如此，我还以为抽屉角落里96年1.5G的硬盘是个黑科技
else if也是要比较两次
站长，你好！
你创办的的网站非常好，为我们学习算法练习编程提供了一个很好的平台，我想给你提个小建议，就是要能把每道题目的难度标出来就好了，这样我们学习起来会有一个循序渐进的过程！
具体实现上有所差别，但思路是一样的
继续加油哦
第36行，struct node **head_ref，怎么理解，那个函数感觉不是很懂啊！？？弱渣求助
第一个真的要比较两次吗，换成else if 不可以吗
对，就是把这32位当成一个长度为32的数
其实不需要用LCA，用DFS+vector更简单
这配图…..
好吧~
不错的网站，建议添加些比赛信息
非常好，初学者就应该先理解递归
第一个数表示数列的个数，5表示之后有5个数
mark, 备用


One-pot chicken with dates and caramelised lemon recipe
by Alison RomanChicken that is both nearly-fall-apart tender and deeply golden brown. It can be cooked a few hours ahead, then kept in the casserole at room temperature. If you wish to reheat it before serving, pop it in the oven without a lid on for 10-15 minutes.
Prep time: 10 minutes | Cooking time: 1 hour 10 minutes
SERVES
four to six
INGREDIENTS
- a 1.8kg chicken, or 1.25kg bone-in, skin-on chicken thighs or legs
- 4 tbsp olive oil
- 1 lemon, cut into thick slices crossways, seeds removed
- 2 shallots, halved lengthways
- 4-6 Medjool dates, pitted
- 4 thyme or oregano sprigs, plus extra to serve
- 2 tsp ground Urfa chilli, or 1 tsp chilli flakes
- flaky sea salt
METHOD
- Preheat the oven to 220C/ 200C fan/gas mark 7.
- Season the chicken all over with salt and pepper. Heat two tablespoons of the oil in a large, flame-proof casserole dish over a medium-high heat. Place the chicken in the pot, breast-side up. Using tongs, press lightly to make sure the skin comes into even contact with the bottom of the pot (if using parts, just sear the chicken skin-side down). Cook, without moving it, until the chicken is nice and browned, five to eight minutes. No peeking!
- Add the lemon and shallot, manoeuvring the chicken so the lemon slices come into contact with the bottom of the pot. Let everything sizzle until lightly caramelised, about two minutes.
- Add the dates, herbs and 250ml water. Sprinkle the top of the chicken with chilli and place the lid on. Transfer to the oven and roast until the dates are plump, the lemon slices are jammy, and the chicken is almost but not totally cooked through, 20-25 minutes. (The chicken will look mostly cooked through and a little anaemic from having been covered.)
- Remove the lid and drizzle the chicken with the remaining olive oil. Continue to cook until the liquid has reduced by half and the top of the chicken is a glistening golden brown, another 20-30 minutes (depending on whether you’re using parts or a whole bird).
- Let the chicken rest in the pot for 10 minutes, then transfer to a cutting board and carve. Serve alongside the shallot, lemon slices and dates, with more herbs and flaky salt sprinkled over.
Recipe from Nothing Fancy by Alison Roman (Hardie Grant, £22). Order your copy from books.telegraph.co.uk


sorghum perennial crops hybrid choice ⁎⁎⁎ yield seed farmers crop attributes preferences requirements model varieties soil important Mali climate labor traditional {border-style agricultural experiments Table average px;} rainfall #ffffff;} production variable gender improvement women Sorghum annual change high systems cropping different higher significant sorghum. tradeoffs used attribute breeding farmers. grain using value Agric. Choice Econ. adoption duration land njs seeds variation Africa RPL WTP-space ecosystem estimate main plant reuse UPA West farmer farmers' hybrids improved positive preference reduction required use However, Mali. Perennial Seed access adaptation associated common diversity food indicates local lower parameter particularly population px; relatively technologies technology water {font-family Cox Dioïla Smale Snapp Tominian ability climatic font-size heterogeneity improve levels likely maize marginal parameters percentage present presented rate research root services sorghum, standard total utility valuation variability Birol Bougouni Coefficient Error Hybrid Institute Mali, S.S. Semi-Arid Soil Tropics [alt-text] attributes. coefficient conditions design developing development differences double; efforts environmental farming genetic increase indicating inputs interactions level level, literature little management new production. respondent sample sets significance small staple tradeoff villages mm D.L. Ecol. Farmers Fig. Glover International J.D. Labor Michigan Ortega Random Rattunde Research Richardson Scarpa Waldman Yield advantages agroecological allows approach area areas assume avoid based binary biomass border-color border-width consistent cost crops, demand dry evidence experiment. farm forage framed function growing households impact individual large low make manage men previous producing quality random region resilient scale shorter smallholder solid; statistics traits understand versus {font-style {font-weight −%, (or Africa. Breeding Climate Crops Culman DeHaan Developing Diallo Environ. Hall Kelly L.R. Mean R.B. State Std. Sánchez-Toledano Useche adapt adaptation. analysis approximately benefits bold capture cereal change. choices component counterparts courier; covers create crops. cultivation current deviations drought dummy early ecological em; estimates experiment extensive figures greater highest household identified income increasing involved latent like long male market maturing means measure models natural observed opposed opt people potential potentially prefer primary pt;} regions require requirements, residue respectively. risk roughly security southern specifically study sustainable target terms times understanding values variety wheat wide willing years yield. kg/ha


Question
Implement regular expression matching with support for '.'
and '*'
.
'.' Matches any single character. '*' Matches zero or more of the preceding element. The matching should cover the entire input string (not partial). The function prototype should be: bool isMatch(const char *s, const char *p) Some examples: isMatch("aa","a") → false isMatch("aa","aa") → true isMatch("aaa","aa") → false isMatch("aa", "a*") → true isMatch("aa", ".*") → true isMatch("ab", ".*") → true isMatch("aab", "c*a*b") → true
Stats
| Frequency | 3 |
| Diffficulty | 5 |
| Adjusted Difficulty | 4 |
| Time to use | ---------- |
Ratings/Color = 1(white) 2(lime) 3(yellow) 4/5(red)
Analysis
Very important to note: Do not use DP. Why? Because eg. “a*b” will be considered as 2 parts: “a*” part and “b” part. Because star is considered to be bundled with previous char, it gives us difficulty in determine the size of the DP array. Of course, we still can do it, but I see nobody have provided a nice DP solution online. Let’s just forget about it for now.
The solution I’m giving in this post, is to trim String and compare.
We only need to consider 2 cases:
One, the next char is NOT a star sign. This requires simply char compare.
Two, the next char is a star sign, this will require some effort.
Solution
In case of one letter bundled with a star sign, we iterate thru all possible number of repetition of current char (from 0 until large), and check validation one by one.
A final important note, this question very much looks like DP, but NOT DP.
My code
My code.
public class Solution {
public boolean isMatch(String s, String p) {
// eg. s = "aab" p = "c*a*b"
return check(s, p, 0, 0);
}
private boolean check(String s, String p, int start1, int start2) {
int len1 = s.length();
int len2 = p.length();
if (start1 == len1 && start2 == len2) {
return true;
} else if (start2 == len2) {
// if p is used up, but still some letters left in s
return false;
}
// check if there is * after start2 in p
if (start2 == len2 - 1 || p.charAt(start2 + 1) != '*') {
// if there is no *
// match only 1 char
if (start1 == len1) {
// unable to match single char because s is fully used up
} else if (p.charAt(start2) != '.' && s.charAt(start1) != p.charAt(start2)) {
// if single char could not be matched
return false;
} else {
// if single letter matches
return check(s, p, start1 + 1, start2 + 1);
}
} else {
// if there is a * following start2
if (check(s, p, start1, start2 + 2)) {
// the letter in p represent 0 chars
return true;
} else {
// the letter in p represent 1 or more chars
// advance start1 until the end of s
while (start1 < len1) {
// check if the char matches
if (p.charAt(start2) != '.' && s.charAt(start1) != p.charAt(start2)) {
break;
}
if (check(s, p, start1 + 1, start2 + 2)) {
return true;
}
start1++;
}
}
}
return false;
}
}
A much shorter version from someone else making use of String.substring(). I refactored a bit.
public class Solution {
public boolean isMatch(String s, String p) {
// s is normal string, and p is regex string
if (p.length() == 0) {
return s.length() == 0;
} else if (p.length() < 2 || p.charAt(1) != '*') {
// if 2nd char in p is not '*', then match character
if (s.length() == 0) {
return false;
} else if (p.charAt(0) != '.' && s.charAt(0) != p.charAt(0)) {
return false;
} else {
return isMatch(s.substring(1), p.substring(1));
}
} else {
// if 2nd char in p is '*', then iterate all position repetitions
char repeatLetter = p.charAt(0);
for (int i = 0; i <= s.length(); i++) {
// i is the number of repetition of repeatLetter, start from 0
if (i > 0 && repeatLetter != s.charAt(i - 1)
&& repeatLetter != '.') {
break;
} else {
if (isMatch(s.substring(i), p.substring(2))) {
return true;
}
}
}
return false;
}
}
}


First International Summer School on Emerging Trends in Concurrency July 24-29 2006, Bertinoro University Residential Center, Italy TiC'06 Application Form First Name: Last Name: Sex (M/F): Date of birth: Place of birth: Nationality: Position: Affiliation: Address: City/State: Zip Code: Country: E-mail Address: Fax: Please select one: [__] I request no grant. [__] I request a grant for my registration (specify amount, up to 350 Euros): ___ Euros. [__] I request a grant for my accommodation (specify amount, up to 350 Euros): ___ Euros. In the case you request a grant, insert one person to whom letters of recommendation can be asked, if deemed necessary. Advisor: Last name: First name: Institution: E-m@il: Curriculum vitae:


module Data:sig
..end
Data is a collection of bits, that can be stored and loaded on some media. This module provides functions for doing this in a generic way.
To be on a safe side, we insist on explicit versioning of each data representation. Otherwise, any OCaml value is suitable for this module.
The module defines interfaces Std.Data.S
that describes the
expected set of functions for data. It also defines a Cache.S
interface, that is useful for caching data that is hard to
obtain.
type('a, 'b)
copy ='b -> 'a -> int -> unit
copy buf obj pos
is a method to copy object obj
into a buffer
buf
, starting from a position pos
and will return the number
of bytes written. XXX: we need the amount of bytes beforehand.type('a, 'b)
dump ='b -> 'a -> unit
dump out obj
a type of functions that outputs a value obj
into output out
typelexbuf =
Lexing.lexbuf
typescanbuf =
Scanf.Scanning.scanbuf
module Versioned:sig
..end
val marshal_reader : (module Core_kernel.Std.T with type t = 'a) -> 'a Std.reader
marshal_reader (module T)
returns a reader in OCaml
Marshal
format.val marshal_writer : (module Core_kernel.Std.T with type t = 'a) -> 'a Std.writer
marshal_writer (module T)
returns a writer in OCaml
Marshal
format.val sexp_reader : (module Core_kernel.Std.Sexpable with type t = 'a) -> 'a Std.reader
sexp_reader (module T)
returns a reader in sexp format.
sexp_writer (module T)
returns a writer in sexp format.
val bin_reader : (module Core_kernel.Std.Binable with type t = 'a) -> 'a Std.reader
bin_reader (module T)
returns a reader in binprot format.val bin_writer : (module Core_kernel.Std.Binable with type t = 'a) -> 'a Std.writer
bin_writer (module T)
returns a writer in binprot format.val pretty_writer : (module Core_kernel.Std.Pretty_printer.S with type t = 'a) ->
'a Std.writer
pretty_printer (module T
creates a writer that uses T.pp
function for outputting.module type S =sig
..end
module Make(
T
:
Versioned.S
)
:S
with type t := T.t
Data.S
interface from the provided minimal implementation.
module Read:sig
..end
Read
typeclass.
module Write:sig
..end
module Cache:sig
..end


Eric Charles Nystrom
Reports on the history of visual tools used in mining engineering, with a very strong representation of the actual emergence and adoption of blueprint technology.
"The term “blueprint” became a synonym for “plan” at least as early as 1926, according to the Oxford English Dictionary."
"Since the message – the drawing – was duplicated perfectly by the blueprint process, the medium itself was overlooked. However, the introduction of the blueprint process spurred dramatic changes in how businesses, including mining companies, were organized both spatially and conceptually. Blueprints helped consolidate authority in the space of the engineering office and in the hands of upper management."
"With blueprints, it became significantly easier for documents to make the transition from the safe confines of the office into the hazardous spaces of the production plant, above and below ground. This in turn made it far easier to precisely convey the engineers’ vision of work to be performed to those who would do the actual labor, and it allowed the engineers themselves to bring their visual representations with them to help them with decisionmaking while on-site."
"If information was inscribed on a blueprint, the data did not become part of the information flow of the operation until it was inscribed on the original non-blueprint master tracing."
"Compare this centralized, pyramidal structure of knowledge authority with the pre-blueprint situation. Each tracing of a map, if intended to be complete, was essentially indistinguishable from the original, leading to the possibility of parallel, competing visual representations, each with the possibility of being inscribed with new information and thus “forking” the flow of data. The Quincy Mine employed one potential solution to this problem - the primary map was inscribed on heavy stock, backed with canvas. Any map on tracing linen, therefore, was easily noticeable as a copy. This posed a problem later, however, with the introduction of blueprinting to the firm, since blueprints could not be made from the opaque master-map, and had to be made from a master-copy instead."
"Fundamentally, the maps, models, photographs, blueprints, and museum
exhibits I describe in earlier chapters were means of rendering visible
places that could otherwise not be seen. For mining engineers, many
visual tools could be used directly in the day-to-day business of mining,
or to help them gain the upper hand in legal struggles or in the realm of
safety and the work habits of miners. At the same time, the ability to
create and use maps, models, photographs, blueprints, and exhibits
depicting underground spaces was almost always the prerogative of mining
engineers, mine owners, and other elites such as corporate-minded museum
curators. Accordingly, everyday miners have appeared in my account only
rarely, mostly as those whose habits and labor engineers wished to
control.
Nonetheless, miners themselves had myriad ways to depict and understand
the underground spaces in which they worked. A rich repertoire of mining
folklore included supernatural beings, both malevolent and those, such as
the famous Cornish “tommyknockers,” that helped the miner by warning him
of impending danger. Miners used candle flames or chalk to create
underground graffiti, such as that captured in a Lewis Hine photograph of
a trapper and a heavy door in a West Virginia bituminous coal mine (shown
in the Photographs chapter). Miners also created songs about their work.
Folklore, graffiti, and music were all ways that miners sought to give
meaning to their work and their workplace, and to communicate that
meaning to other miners and to outside audiences.
"[William Keating's] was a universal story about mine work that was embedded in the dirty patched blue jeans, in the grimy cap and rusty lunch pail. Anyone, I believed, could see these pants and understand their resonance. 5 These artifacts brought the story of working in a coal mine to life more vividly and authentically than anything else could.


You seem to be lost...
Unless you aren't
In that case, welcome to my website. You may call me
Click the above link to find out more about me
Fun Fact: The background colour of this website is called the ' Cosmic Latte'. It is the average colour of the universe.
Plus, you can check out my album.


CS 184: Computer Graphics and Imaging, Spring 2018
Final Project Proposal: Position Based Fluids
Anna Brewer:
Yining Chen: 25115899
Regina Ongowarsito:
Overview
Section I: Bezier Curves and Surfaces
Part 1: Bezier curves with 1D de Casteljau subdivision
Caption goes here.
Caption goes here.
Caption goes here.
Caption goes here.
Part 2: Bezier surfaces with separable 1D de Casteljau subdivision
Section III: Mesh Competition
If you are not participating in the optional mesh competition, don't worry about this section!
Part 7: Design your own mesh!


THE SCORE A film review by Christopher Null Copyright 2001 filmcritic.com
I'll admit to having a soft spot for heist movies.
Hallelujah. The Score is the heist film I've wanted to see for a long time. Not since James Caan burned that safe open in 1981's Thief has a safecracking been so tense and meticulously designed. And with the triple threat of Ed Norton, Robert De Niro, and -- God bless him -- Marlon Brando, The Score is in some excellent hands.
The story is a familiar one. De Niro plays the likable Nick Wells, an expert safecracker who has clearly done well living a life of crime. He lives the high life, but does it quietly, in Montreal, where he runs a swanky jazz club (presumably as a money laundering front). Much like Pierce Brosnan's Crown, we instantly like Nick, and when he expresses doubts about a big job his rotund partner Max (Brando) cooks up, we want to agree with his demurral. But Max's inside man Jackie (Norton) will have none of it -- he weasels his way into Nick's audience and convinces him to do the job. The prize: a priceless gold scepter, secreted in a maximum-security vault in the basement of the Montreal customs office.
Jackie is key -- under the guise of a retarded janitor named David, he has the run of the building. With his inside knowledge and Nick's raw talent, the job looks doable. If there is any honor among thieves, that is.
Like any good heist movie, The Score walks us through the minutiae of masterminding such a grand plan, leaving enough of it secret so that when it plays out on the screen, we're on the edges of our seats. De Niro is solid, but it's Norton who steals the show with his haughty and smarmy Jackie (not to mention a spot-on retarded janitor). Brando, of course, is larger than life and, like any wonder of the world, a spectacle to behold. His screen time, sadly, is predictably brief.
The Score also has some other nice touches. Its set designs are impeccable, with Nick's jazz club a haunt I'd love to be a regular at. The film also features the most amusing computer hacker character (played to caffeine-addled perfection by Jamie Harrold) I've seen since WarGames.
Alas, the film is already drawing criticism, and justly so, for a remarkably slow first act. The film plods for at least half an hour, repetitiously setting up what is already apparent: that Nick is plenty well off and wants out of the racket. Angela Bassett's girlfriend role is a throwaway, a blatant (and unsuccessful) attempt to get a woman somewhere in the movie. Howard Shore's score is also undercooked, a crummy rush job that repeats endlessly and pulls you out of the action (visit the movie's web site and you can hear it for yourself, over and over and over again).
But when the music is low and the game is on, The Score manages to pull off a rare feat seen so rarely in cinema today: It makes you forget you're watching a movie. While recent movies like Memento have been stellar, they're still just pictures on a screen. The Score makes you feel like you're handing De Niro a bolt cutter so he can get through a steel cage. My palms were sweating out of apprehension for the guy. Frank Oz is no master director, but he's managed to pull off a rare home run with this one.
As a side note, The Score also has a bit of Hollywood gossip surrounding it, namely involving the rumor that Brando would have none of Frank Oz's direction to "tone it down." Considering Brando is Brando and Oz is the voice of Miss Piggy, it's easy to understand both sides of the argument.

Visit filmcritic.com on the Web at http://www.filmcritic.com
========== X-RAMR-ID: 28794 X-Language: en X-RT-ReviewID: 235439 X-RT-TitleID: 1108799 X-RT-SourceID: 178 X-RT-AuthorID: 1062 X-RT-RatingText: 4.5/5
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


The trip you've been waiting for is a few steps away
1- Choose your preferred destination, dates and Interests
2- We'll send you a several travel plans from the top agencies
3- Choose the best offer for you
Upcoming Group Trips
Explore the world with Intense! We offer you a vast variety of group tours of all types featuring both exotic and already well-known destinations, the scheduled ones are listed below.
Stay tuned for our next trip
{{trip.enDescription}}
{{trip.enName}}
{{trip.departureDate | date: 'MMM dd, yyyy'}} to {{trip.returnDate | date: 'MMM dd, yyyy'}}
{{trip.needsVisa ? '' : 'No '}}Visa Required
Group of {{trip.numOfPersons}} persons
-
EGP {{trip.totalCost}} per person
- Register NOW!
Why Us?
Tailor-made trips
We pay attention to the details to offer you a top quality customized travel experience, tailor made for your specific interests within your budget and according to your needs.
Enhanced travel experience
We focus on providing your trip with the elements that contribute to the quality and the travel experience. we'll be in charge of putting together your flight, accommodation and activities itinerary.
Hassle-free
We put a lot of effort into creating a detailed travel itineraries that will guide you through your trip. Through booking with us, you won't have to go through the hassle of researching your destination for weeks, instead, you will have tailor made trip that addresses your interests, budget and needs.
Featured in ...
How we were featured in the Egyptian media ...
What Our Clients Say
My family trip to Malaysia was Amazing. The day to day planing couldn’t be better and worth every penny.Rania Saleh
I really enjoyed Bali’s trip so much, you guys made my Honeymoon perfect by recommending the best things ever which totally matched what we love. Thanks a million.Shahd Taha
Best website to use if you are looking for a plan that matches your travel style, I travelled to Malaysia and Bali and I couldn’t enjoy it more.Tamer Mohamed
Explore the Distant Corners of the World
With us you can reach even the most distant corners of the world!


Tame Impala - Innerspeaker
Man, you have to respect the genius of Kevin Parker. Multi-instrumentalist, singer and songwriter and even record producer. Kevin became obsessed with music already as a child, spending evenings alone in his room figuring out beautiful melodies and putting them down on tape. He has, since the beginning of Tame Impala, always written everything himself, and also plays all of the instruments in the album recordings, which he produces himself. For live performances he got a group of very talented musicians, but actually the talent is all him.
Tame Impala sounds like The Beatles' psychedelic era just with more... psychedelics. Their debut album is filled with catchy hooks and otherwordly guitar sounds. Sometimes you are not sure if a piece is played by a synth or a guitar, or a mixture of both. For people who like guitar pedals and effects, you will love this band.
Also the lyrics are great. I especially like the solipsistic "Solitude is Bliss":
"Space around me where my soul can breathe
I've got body that my mind can leave
Nothing else matters, I don't care what I miss
Company's okay, solitude is bliss"
The album can't really be found on streaming sites, but here's a Youtube playlist.


The plural & singular terminology of data. Ex. Create "user"; Show "users";
Please select the view permissions; you can always edit the permissions later.
Connect an existing view as a subview to display child table rows.


Photos
Professional Farrier Service
Photo Gallery
Home
(current)
Hoofcare Services
Photo Gallery
About
Location


My Heading
Welcome to the
Sidebar
Caption this!
Nothing to see here, move along
Random Link
line1!
line2!
line3!


Reports local variables named identically to visible fields of their class or surrounding classes if it is a local variable inside of an inner or anonymous class. Such a variable name may be confusing.
Powered by InspectionGadgets


Bootstrap makes front-end web development faster and easier. It's made for folks of all skill levels, devices of all shapes, and projects of all sizes.
Bootstrap ships with vanilla CSS, but its source code utilizes the two most popular CSS preprocessors, Less and Sass. Quickly get started with precompiled CSS or build on the source.
Bootstrap easily and efficiently scales your websites and applications with a single code base, from phones to tablets to desktops with CSS media queries.
With Bootstrap, you get extensive and beautiful documentation for common HTML elements, dozens of custom HTML and CSS components, and awesome jQuery plugins.
Bootstrap is open source. It's hosted, developed, and maintained on GitHub.
View the GitHub projectTake Bootstrap to the next level with official premium themes. Each theme is its own toolkit featuring all of Bootstrap, brand new components and plugins, full docs, build tools, and more.
Millions of amazing sites across the web are being built with Bootstrap. Get started on your own with our growing collection of examples or by exploring some of our favorites.
We showcase dozens of inspiring projects built with Bootstrap on the Bootstrap Expo.
Explore the Expo


Class: Concurrent::Atom
- Inherits:
-
Synchronization::Object
- Object
- Synchronization::Object
- Concurrent::Atom
- Includes:
- Concern::Observable
- Defined in:
- lib/concurrent/atom.rb
Overview
Atoms provide a way to manage shared, synchronous, independent state.
An atom is initialized with an initial value and an optional validation proc. At any time the value of the atom can be synchronously and safely changed. If a validator is given at construction then any new value will be checked against the validator and will be rejected if the validator returns false or raises an exception.
There are two ways to change the value of an atom: #compare_and_set and #swap. The former will set the new value if and only if it validates and the current value matches the new value. The latter will atomically set the new value to the result of running the given block if and only if that value validates.
Example
def next_fibonacci(set = nil)
return [0, 1] if set.nil?
set + [set[-2..-1].reduce{|sum,x| sum + x }]
end
# create an atom with an initial value
atom = Concurrent::Atom.new(next_fibonacci)
# send a few update requests
5.times do
atom.swap{|set| next_fibonacci(set) }
end
# get the current value
atom.value #=> [0, 1, 1, 2, 3, 5, 8]
Observation
Atoms support observers through the Observable mixin module.
Notification of observers occurs every time the value of the Atom changes.
When notified the observer will receive three arguments: time
, old_value
,
and new_value
. The time
argument is the time at which the value change
occurred. The old_value
is the value of the Atom when the change began
The new_value
is the value to which the Atom was set when the change
completed. Note that old_value
and new_value
may be the same. This is
not an error. It simply means that the change operation returned the same
value.
Unlike in Clojure, Atom
cannot participate in TVar transactions.
Thread-safe Variable Classes
Each of the thread-safe variable classes is designed to solve a different problem. In general:
- Agent: Shared, mutable variable providing independent, uncoordinated, asynchronous change of individual values. Best used when the value will undergo frequent, complex updates. Suitable when the result of an update does not need to be known immediately.
- Atom: Shared, mutable variable providing independent, uncoordinated, synchronous change of individual values. Best used when the value will undergo frequent reads but only occasional, though complex, updates. Suitable when the result of an update must be known immediately.
- AtomicReference: A simple object reference that can be atomically. Updates are synchronous but fast. Best used when updates a simple set operations. Not suitable when updates are complex. AtomicBoolean and AtomicFixnum are similar but optimized for the given data type.
- Exchanger: Shared, stateless synchronization point. Used when two or more threads need to exchange data. The threads will pair then block on each other until the exchange is complete.
- MVar: Shared synchronization point. Used when one thread must give a value to another, which must take the value. The threads will block on each other until the exchange is complete.
- ThreadLocalVar: Shared, mutable, isolated variable which holds a different value for each thread which has access. Often used as an instance variable in objects which must maintain different state for different threads.
- TVar: Shared, mutable variables which provide coordinated, synchronous, change of many stated. Used when multiple value must change together, in an all-or-nothing transaction.
Instance Method Summary collapse
-
#add_observer(observer = nil, func = :update, &block) ⇒ Object
included
from Concern::Observable
Adds an observer to this set.
-
#compare_and_set(old_value, new_value) ⇒ Boolean
Atomically sets the value of atom to the new value if and only if the current value of the atom is identical to the old value and the new value successfully validates against the (optional) validator given at construction.
-
#count_observers ⇒ Integer
included
from Concern::Observable
Return the number of observers associated with this object.
-
#delete_observer(observer) ⇒ Object
included
from Concern::Observable
Remove
observer
as an observer on this object so that it will no longer receive notifications. -
#delete_observers ⇒ Observable
included
from Concern::Observable
Remove all observers associated with this object.
-
#initialize(value, opts = {}) ⇒ Atom
constructor
Create a new atom with the given initial value.
-
#reset(new_value) ⇒ Object
Atomically sets the value of atom to the new value without regard for the current value so long as the new value successfully validates against the (optional) validator given at construction.
-
#swap(*args) {|value, args| ... } ⇒ Object
Atomically swaps the value of atom using the given block.
-
#value ⇒ Object
(also: #deref)
The current value of the atom.
-
#with_observer(observer = nil, func = :update, &block) ⇒ Observable
included
from Concern::Observable
As
#add_observer
but can be used for chaining.
Constructor Details
#initialize(value, opts = {}) ⇒ Atom
Create a new atom with the given initial value.
121 122 123 124 125 126 |
# File 'lib/concurrent/atom.rb', line 121 def initialize(value, opts = {}) super() @Validator = opts.fetch(:validator, -> v { true }) self.observers = Collection::CopyOnNotifyObserverSet.new self.value = value end |
Instance Method Details
#add_observer(observer = nil, func = :update, &block) ⇒ Object Originally defined in module Concern::Observable
Adds an observer to this set. If a block is passed, the observer will be created by this method and no other params should be passed.
#compare_and_set(old_value, new_value) ⇒ Boolean
Atomically sets the value of atom to the new value if and only if the current value of the atom is identical to the old value and the new value successfully validates against the (optional) validator given at construction.
181 182 183 184 185 186 187 188 |
# File 'lib/concurrent/atom.rb', line 181 def compare_and_set(old_value, new_value) if valid?(new_value) && compare_and_set_value(old_value, new_value) observers.notify_observers(Time.now, old_value, new_value) true else false end end |
#count_observers ⇒ Integer Originally defined in module Concern::Observable
Return the number of observers associated with this object.
#delete_observer(observer) ⇒ Object Originally defined in module Concern::Observable
Remove observer
as an observer on this object so that it will no
longer receive notifications.
#delete_observers ⇒ Observable Originally defined in module Concern::Observable
Remove all observers associated with this object.
#reset(new_value) ⇒ Object
Atomically sets the value of atom to the new value without regard for the current value so long as the new value successfully validates against the (optional) validator given at construction.
198 199 200 201 202 203 204 205 206 207 |
# File 'lib/concurrent/atom.rb', line 198 def reset(new_value) old_value = value if valid?(new_value) self.value = new_value observers.notify_observers(Time.now, old_value, new_value) new_value else old_value end end |
#swap(*args) {|value, args| ... } ⇒ Object
The given block may be called multiple times, and thus should be free of side effects.
Atomically swaps the value of atom using the given block. The current value will be passed to the block, as will any arguments passed as arguments to the function. The new value will be validated against the (optional) validator proc given at construction. If validation fails the value will not be changed.
Internally, #swap reads the current value, applies the block to it, and attempts to compare-and-set it in. Since another thread may have changed the value in the intervening time, it may have to retry, and does so in a spin loop. The net effect is that the value will always be the result of the application of the supplied block to a current value, atomically. However, because the block might be called multiple times, it must be free of side effects.
157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/concurrent/atom.rb', line 157 def swap(*args) raise ArgumentError.new('no block given') unless block_given? loop do old_value = value new_value = yield(old_value, *args) begin break old_value unless valid?(new_value) break new_value if compare_and_set(old_value, new_value) rescue break old_value end end end |
#value ⇒ Object Also known as: deref
The current value of the atom.
|
|
# File 'lib/concurrent/atom.rb', line 104
|
#with_observer(observer = nil, func = :update, &block) ⇒ Observable Originally defined in module Concern::Observable
As #add_observer
but can be used for chaining.


Top suggestions based on your criteria
% match with category 1
% match with category 1
% match with category 1
% match with category 1
% match with category 1
% match with category 2
% match with category 2
% match with category 2
% match with category 2
% match with category 2
% match with category 3
% match with category 3
% match with category 3
% match with category 3
% match with category 3


Triumpet allows you to search for items using our indoor mapping technology. Spend less time looking for things, and more time shopping for the right thing.
A smart way to manage your retail space
See what your customers search for, and re-configure your layout accordingly.


- GALAXIAN - Static variable in class model.Level
-
It represents a bonus object for the game.
- Game - Class in model
-
- Game() - Constructor for class model.Game
-
Creates a game starting all the initial levels, characters, maze, coordinates with respect to a determinate sequence.
- getAdjacent(E) - Method in class dataStructures.AdjacencyListGraph
-
It allows to obtain all the adjacent vertices of a determinate source that arrives as parameter.
- getAdjacent(E) - Method in class dataStructures.AdjacencyMatrixGraph
-
It allows to obtain all the adjacent vertices of a determinate source that arrives as parameter.
- getAdjacent(E) - Method in interface dataStructures.IGraph
-
It allows to obtain all the adjacent vertices of a determinate source that arrives as parameter.
- getApple() - Method in class ui.PrimaryStageController
-
Allows to get an ImageView that represents the apple sign.
- getBell() - Method in class ui.PrimaryStageController
-
Allows to get an ImageView that represents the bell sign.
- getBlinky() - Method in class model.Game
-
Allows to obtain a ghost that represents the ghost blinky.
- getBlinky() - Method in class ui.PrimaryStageController
-
Allows to get an ImageView that represents blinky ghost.
- getBonus() - Method in class model.Level
-
Allows to obtain a string that represents the bonus points.
- getBonusFruitsContainer() - Method in class ui.PrimaryStageController
-
Allows to get a FlowPane that represents the fruits container.
- getBonusImage() - Method in class ui.PrimaryStageController
-
Allows to get an ImageView that represents the bonus sign.
- getBonusScore() - Method in class model.Level
-
Allows to obtain the bonus points as an integer.
- getBonusTile() - Method in class model.Game
-
Allows to obtain a coordinate that represents the coordinate of the bonus tile.
- getCherry() - Method in class ui.PrimaryStageController
-
Allows to get an ImageView that represents the cherry sign.
- getClyde() - Method in class model.Game
-
Allows to obtain a ghost that represents the ghost clyde.
- getClyde() - Method in class ui.PrimaryStageController
-
Allows to get an ImageView that represents clyde ghost.
- getColor() - Method in class dataStructures.Vertex
-
It allows to get the state of the actual vertex defined by a color.
- getCoordinates() - Method in class model.Game
-
Allows to obtain an ArrayList that represents all the maze coordinates.
- getCruiseElroyDotsLeft1() - Method in class model.Level
-
Allows to obtain an integer that represents the number of first dots remaining at left.
- getCruiseElroyDotsLeft2() - Method in class model.Level
-
Allows to obtain an integer that represents the number of second dots remaining at left.
- getCruiseElroySpeed1() - Method in class model.Level
-
Allows to obtain an integer that represents the first speed associated with the first dots remaining at left.
- getCruiseElroySpeed2() - Method in class model.Level
-
Allows to obtain an integer that represents the second speed associated with the second dots remaining at left.
- getCurrentLevel() - Method in class model.Game
-
Allows to obtain a level that represents the current level being played.
- getCurrentStage() - Method in class model.Game
-
Allows to obtain an integer that represents the current stage.
- getDeath() - Method in class ui.PrimaryStageController
-
Allows to get an AudioClip that represents the sound of the Pacman death.
- getDFSDiscoveredTime(E) - Method in class dataStructures.AdjacencyListGraph
-
It allows to obtain the time that DFS performs discovering a vertex that arrives as parameter.
- getDFSDiscoveredTime(E) - Method in class dataStructures.AdjacencyMatrixGraph
-
It allows to obtain the time that DFS performs discovering a vertex that arrives as parameter.
- getDFSDiscoveredTime(E) - Method in interface dataStructures.IGraph
-
It allows to obtain the time that DFS performs discovering a vertex that arrives as parameter.
- getDFSFinishedTime(E) - Method in class dataStructures.AdjacencyListGraph
-
It allows to obtain the time that DFS performs finishing a vertex that arrives as parameter.
- getDFSFinishedTime(E) - Method in class dataStructures.AdjacencyMatrixGraph
-
It allows to obtain the time that DFS performs finishing a vertex that arrives as parameter.
- getDFSFinishedTime(E) - Method in interface dataStructures.IGraph
-
It allows to obtain the time that DFS performs finishing a vertex that arrives as parameter.
- getDirection() - Method in class model.Character
-
It allows to obtain a Direction that represents the direction of the actual character.
- getDiscovered() - Method in class dataStructures.Vertex
-
It allows to get an integer that represents if the actual vertex stage has been discovered when BFS is being applied.
- getDistance(E, E) - Method in class dataStructures.AdjacencyListGraph
-
It allows to get the distance between two pairs of vertices.
- getDistance(E, E) - Method in class dataStructures.AdjacencyMatrixGraph
-
It allows to get the distance between two pairs of vertices.
- getDistance(E, E) - Method in interface dataStructures.IGraph
-
It allows to get the distance between two pairs of vertices.
- getDistance() - Method in class dataStructures.Vertex
-
It allows to get the actual vertex distance.
- getDotsLeft() - Method in class model.Level
-
Allows to obtain an integer that represents the remaining left dots in the maze.
- getDst() - Method in class dataStructures.Edge
-
It allows to get the vertex which src is connected with.
- getEatDot() - Method in class ui.PrimaryStageController
-
Allows to get an AudioClip that represents the sound of a eaten dot.
- getEatFruit() - Method in class ui.PrimaryStageController
-
Allows to get an AudioClip that represents the sound of a eaten fruit.
- getEatGhost() - Method in class ui.PrimaryStageController
-
Allows to get an AudioClip that represents the sound of a eaten ghost.
- getEdges() - Method in class dataStructures.AdjacencyMatrixGraph
-
It allows to get all the actual graph edges.
- getEdgeWeight(E, E) - Method in class dataStructures.AdjacencyListGraph
-
It allows to get the weight between two pairs of vertices that arrive as parameters.
- getEdgeWeight(E, E) - Method in class dataStructures.AdjacencyMatrixGraph
-
It allows to get the weight between two pairs of vertices that arrive as parameters.
- getEdgeWeight(E, E) - Method in interface dataStructures.IGraph
-
It allows to get the weight between two pairs of vertices that arrive as parameters.
- getElement() - Method in class dataStructures.Node
-
This method allows to get the element E.
- getElement() - Method in class dataStructures.Vertex
-
It allows to get the related E object of the actual vertex.
- getExtraLive() - Method in class ui.PrimaryStageController
-
Allows to get an AudioClip that represents the sound of a extra live.
- getFinished() - Method in class dataStructures.Vertex
-
It allows to get an integer that represents if the actual vertex stage is finished when BFS is applied.
- getFood() - Method in class model.Game
-
Allows to obtain a hash table that represents the food and its respective coordinate in the maze.
- getFreeRow() - Method in class dataStructures.AdjacencyMatrixGraph
-
It returns the free row value as an integer.
- getFrightenedCountdown() - Method in class model.Game
-
Allows to get a long value that represents the time during the ghosts will be frightened.
- getFrightGhostsSpeed() - Method in class model.Level
-
Allows to obtain an integer that represents the ghosts speed when they are frightened by the energizer eating.
- getFrightTime() - Method in class model.Level
-
Allows to obtain an integer that represents the period during which the ghosts are frightened.
- getGalaxian() - Method in class ui.PrimaryStageController
-
Allows to get an ImageView that represents the galaxian sign.
- getGame() - Method in class ui.PrimaryStageController
-
Allows to get a game that represents the actual game.
- getGameOverImage() - Method in class ui.PrimaryStageController
-
Allows to get an ImageView that represents the game over sign.
- getGhost(String) - Method in class model.Game
-
Allows to obtain a ghost that is identified by its name.
- getGhostImage(String) - Method in class ui.PrimaryStageController
-
This allows to obtain the respective image of the specified ghost.
- getGhostsEaten() - Method in class model.Game
-
Allows to obtain an integer that represents the number of ghosts eaten by Pacman.
- getGhostsSpeed() - Method in class model.Level
-
Allows to obtain an integer that represents the ghosts speed in the game in a determinate stage.
- getGhostsTunelSpeed() - Method in class model.Level
-
Allows to obtain an integer that represents the ghosts speed when it is trying to pass along the tunnel.
- getHouse() - Method in class model.Ghost
-
Allows to obtain a Coordinate that represents the house coordinate in the maze.
- getInitialNumberOfDots() - Method in class model.Game
-
Allows to obtain an integer that represents the initial number of dots in the maze.
- getInky() - Method in class model.Game
-
Allows to obtain a ghost that represents the ghost inky.
- getInky() - Method in class ui.PrimaryStageController
-
Allows to get an ImageView that represents inky ghost.
- getKey() - Method in class ui.PrimaryStageController
-
Allows to get an ImageView that represents the key sign.
- getLastSrc() - Method in class dataStructures.AdjacencyListGraph
-
It returns the last source vertex inside the graph.
- getLastSrc() - Method in class dataStructures.AdjacencyMatrixGraph
-
It returns the last source vertex inside the graph.
- getLeftTileOfTheTunel() - Method in class model.Game
-
Allows to obtain a coordinate that represents the coordinate of the left tunnel entrance.
- getLevels() - Method in class model.Game
-
Allows to obtain an ArrayList that represents all the levels as a ArrayList of them.
- getLives() - Method in class model.Pacman
-
Allows to obtain an Integer that represents the number of lives of Pacman.
- getLivesContainer() - Method in class ui.PrimaryStageController
-
Allows to get a FlowPane that represents the lives container.
- getMap() - Method in class model.Game
-
Allows to obtain a graph that represents the map as a graph of coordinates.
- getMelon() - Method in class ui.PrimaryStageController
-
Allows to get an ImageView that represents the melon sign.
- getName() - Method in class model.Ghost
-
Allows to obtain a string that represents the ghost name.
- getName() - Method in class model.Player
-
It allows to obtain a String that represents the name of the player.
- getNextNode() - Method in class dataStructures.Node
-
This method allows to get the next node of E type.
- getNotEaten() - Method in class model.Food
-
Allows to obtain a boolean that represents the actual state of the food when the game stars.
- getOrder() - Method in class dataStructures.AdjacencyListGraph
-
It allows to get the order as an integer that represents the actual vertices size.
- getOrder() - Method in class dataStructures.AdjacencyMatrixGraph
-
It allows to get the order as an integer that represents the actual keyToIndex size.
- getOrder() - Method in interface dataStructures.IGraph
-
It allows to get the order as an integer that represents the actual graph size.
- getPacman() - Method in class model.Game
-
Allows to obtain Pacman.
- getPacman() - Method in class ui.PrimaryStageController
-
Allows to get an ImageView that represents Pacman.
- getPacmanEatingDotsSpeed() - Method in class model.Level
-
Allows to obtain an integer that represents the actual Pacman speed in the maze when it is eating pacdocts.
- getPacmanSpeed() - Method in class model.Level
-
Allows to obtain an integer that represents the actual Pacman speed in the maze.
- getPacmanWithEnergizerEatingDotsSpeed() - Method in class model.Level
-
Allows to obtain an integer that represents Pacman speed when he eats an energizer and besides dots.
- getPacmanWithEnergizerSpeed() - Method in class model.Level
-
Allows to obtain an integer that represents Pacman speed when he eats an energizer.
- getPath(E, E) - Method in class dataStructures.AdjacencyListGraph
-
It allows to obtain the path between two pair of vertices through an ArrayList of vertices.
- getPath(E, E) - Method in class dataStructures.AdjacencyMatrixGraph
-
It allows to obtain the path between two pair of vertices through an ArrayList of vertices.
- getPath(E, E) - Method in interface dataStructures.IGraph
-
It allows to obtain the path between two pair of vertices through an ArrayList of vertices.
- getPath() - Method in class model.Ghost
-
Allows to obtain an ArrayList of Coordinates that represents a path shaped by various coordinates.
- getPeach() - Method in class ui.PrimaryStageController
-
Allows to get an ImageView that represents the peach sign.
- getPinky() - Method in class model.Game
-
Allows to obtain a ghost that represents the ghost pinky.
- getPinky() - Method in class ui.PrimaryStageController
-
Allows to get an ImageView that represents pinky ghost.
- getPosition() - Method in class model.Character
-
This allows to obtain a Coordinate that represents the position of the actual character.
- getPosX() - Method in class model.Character
-
This allows to obtain a double that represents the position of the actual character in the axis x.
- getPosY() - Method in class model.Character
-
This allows to obtain a double that represents the position of the actual character in the axis y.
- getPredecessor() - Method in class dataStructures.Vertex
-
It allows to get the actual vertex predecessor.
- getRank() - Method in class model.Player
-
It allows to obtain a String that represents the player position in the leader board.
- getReadyImage() - Method in class ui.PrimaryStageController
-
Allows to get an ImageView that represents the get ready sign.
- getRequestedDirection() - Method in class model.Pacman
-
Allows to obtain a Direction that represents the direction that Pacman wants to access in the maze.
- getRightTileOfTheTunel() - Method in class model.Game
-
Allows to obtain a coordinate that represents the coordinate of the right tunnel entrance.
- getScore() - Method in class model.Game
-
Allows to obtain an integer that represents the actual player score.
- getScore() - Method in class model.Player
-
It allows to obtain an Integer that represents the score of the player in the game.
- getScoreLabel() - Method in class ui.PrimaryStageController
-
Allows to get a label that represents the actual score in the game.
- getSingleSourceDistance(E) - Method in class dataStructures.AdjacencyListGraph
-
It allows to obtain the distance of a single vertex specified as parameter.
- getSingleSourceDistance(E) - Method in class dataStructures.AdjacencyMatrixGraph
-
It allows to obtain the distance of a single vertex specified as parameter.
- getSingleSourceDistance(E) - Method in interface dataStructures.IGraph
-
It allows to obtain the distance of a single vertex specified as parameter.
- getSingleSourcePath(E) - Method in class dataStructures.AdjacencyListGraph
-
This method returns an ArrayList of vertices that represents the single path for a specified vertex that arrive as parameter if and only if
bfs, dfs or dijkstra have been called before to determinate this path where if the ArrayList is empty is because there is no possible path
to reach that vertex.
- getSingleSourcePath(E) - Method in class dataStructures.AdjacencyMatrixGraph
-
This method returns an ArrayList of vertices that represents the single path for a specified vertex that arrive as parameter if and only if
bfs, dfs or dijkstra have been called before to determinate this path where if the ArrayList is empty is because there is no possible path
to reach that vertex.
- getSingleSourcePath(E) - Method in interface dataStructures.IGraph
-
This method returns an ArrayList of vertices that represents the single path for a specified vertex that arrive as parameter if and only if
bfs, dfs or dijkstra have been called before to determinate this path where if the ArrayList is empty is because there is no possible path
to reach that vertex.
- getSingleSourcePredecessor(E) - Method in class dataStructures.AdjacencyListGraph
-
It allows to obtain a single predecessor of a determinate vertex that arrives as parameter.
- getSingleSourcePredecessor(E) - Method in class dataStructures.AdjacencyMatrixGraph
-
It allows to obtain a single predecessor of a determinate vertex that arrives as parameter.
- getSingleSourcePredecessor(E) - Method in interface dataStructures.IGraph
-
It allows to obtain a single predecessor of a determinate vertex that arrives as parameter.
- getSize() - Method in class dataStructures.Queue
-
Returns the size of the queue
- getSize() - Method in class dataStructures.Stack
-
Returns the size of the stack.
- getSrc() - Method in class dataStructures.Edge
-
It allows to get the source vertex which dst is connected with.
- getStage() - Method in class model.Level
-
Allows to obtain an integer that represents the actual stage.
- getStage() - Method in class model.Player
-
It allows to obtain an Integer that represents the stage where the player died.
- getStrawberry() - Method in class ui.PrimaryStageController
-
Allows to get an ImageView that represents the strawberry sign.
- getTarget() - Method in class model.Ghost
-
Allows to obtain a Coordinate that represents the target coordinate in the maze.
- getToChase1() - Method in class model.Sequence
-
Allows to obtain an integer that represents the number of times of the first chase.
- getToChase2() - Method in class model.Sequence
-
Allows to obtain an integer that represents the number of times of the second chase.
- getToChase3() - Method in class model.Sequence
-
Allows to obtain an integer that represents the number of times of the third chase.
- getToChaseForEver() - Method in class model.Sequence
-
Allows to obtain an integer that represents the number of times of the next chases.
- getToChaseTimerTask() - Method in class model.Sequence
-
Allows to obtain the chase timer task for the game.
- getToScatter1() - Method in class model.Sequence
-
Allows to obtain an integer that represents the number of times of the first scatter.
- getToScatter2() - Method in class model.Sequence
-
Allows to obtain an integer that represents the number of times of the second scatter.
- getToScatter3() - Method in class model.Sequence
-
Allows to obtain an integer that represents the number of times of the third scatter.
- getToScatterTimerTask() - Method in class model.Sequence
-
Allows to obtain the scatter timer task for the game.
- getType() - Method in class model.Food
-
Allows to obtain a byte that represents the points for the score in the game for a determinate kind of food.
- getVertexAtGivenDistance(E, int) - Method in class dataStructures.AdjacencyListGraph
-
This method allows you to obtain the vertex as from a source vertex and a determinate distance.
- getVertexAtGivenDistance(E, int) - Method in class dataStructures.AdjacencyMatrixGraph
-
This method allows you to obtain the vertex as from a source vertex and a determinate distance.
- getVertexAtGivenDistance(E, int) - Method in interface dataStructures.IGraph
-
This method allows you to obtain the vertex as from a source vertex and a determinate distance.
- getVertexColor(E) - Method in class dataStructures.AdjacencyListGraph
-
It allows to obtain the key state as a color.
- getVertexColor(E) - Method in class dataStructures.AdjacencyMatrixGraph
-
It allows to obtain the key state as a color.
- getVertexColor(E) - Method in interface dataStructures.IGraph
-
It allows to obtain the key state as a color.
- getVertices() - Method in class dataStructures.AdjacencyListGraph
-
It allows to get all the actual graph vertices in a ArrayList.
- getVertices() - Method in class dataStructures.AdjacencyMatrixGraph
-
It allows to get all the actual graph vertices in a ArrayList.
- getVertices() - Method in interface dataStructures.IGraph
-
It allows to get all the actual graph vertices in a ArrayList.
- getWeight() - Method in class dataStructures.Edge
-
It allows to get an integer that represents the connection weight between src and dst.
- getX() - Method in class model.Coordinate
-
It allows to obtain a double that represents a value in the axis x of the coordinated plane.
- getY() - Method in class model.Coordinate
-
It allows to obtain a double that represents a value in the axis y of the coordinated plane.
- Ghost - Class in model
-
- Ghost(Coordinate, Coordinate, String, double, double) - Constructor for class model.Ghost
-
This creates a ghost with a determinate name, initial position and house.
- Ghost.State - Enum in model
-
It represents if the ghost state is scatter or chase.
- GHOSTS_SPRITES - Static variable in class ui.PrimaryStageController
-
It represents the url of the ghosts sprites.
- GhostThread - Class in threads
-
- GhostThread(PrimaryStageController, String) - Constructor for class threads.GhostThread
-
Creates a thread for moving the ghost as from a game controller and the ghost name.
- GRAPH_RESOURCE - Static variable in class model.Game
-
It represents the url of the graph resource.


A full stack developer. Experienced in C#, ASP.NET Core, EntityFramework Core, HTML, CSS, jQuery, Design Patterns, TortoiseGit, Amazon Web Services(EC2, Auto Scalling, Load Balancing)
HIRE MEI have completed my Bsc in Software Engineering from American International University - Bangladesh. Now I am looking for entry level job to start my career. I have developed some projects using C#, WindowsForms, ASP.NET Core MVC, Bootstrap, Semantic-UI, HTML, CSS, jQuery, Clean Architecture
DOWNLOAD RESUMELorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.