Introduction
Welcome back! And more specifically, welcome to the advanced CHS Coding Club class!
Your attendance in this class was and will be always voluntary. Feel like its too hard? No shame; we were all beginners at one point in time. You can always go back to the beginners class next meeting.  I want to assess the abilities of you all, so I can determine at what level I need to be gearing my activities towards this year. If you all ace this test, then hooray! We can try and tackle some harder or more complex things. If not, that's perfectly fine as well; we'll stay solid and cover what we need before moving on.
Throughout the test, I will be providing you with small programs that you can use to test to see if your code is working properly or not. They will be in this side pane. Choose your preferred language in the tabs above.
// You are currently viewing Javascript code.
# You are currently viewing Python code.
// You are currently viewing Java code.
Again: this test is not as much about me trying to judge you and your ability to be in this class. Do not be intimidated by the questions in this test. Do not try to cheat, either; you aren't impressing anyone. I am only doing this to assess the skills of the group as a whole. If you try to Google up solutions to the questions, you're only hurting yourself in the long term, as you will inevitably lost when I assume you understand material that you actually don't.
This test is an opportunity to put those programming skills you've learned over the years to work. Good luck, and have fun!
Submitting, scoring, etc.
There are several ways you can submit your solutions to me:
- Through a repl.it link. Put each solution in a separate file, with the file name matching the one provided in the problem specification.
- Emailing me<EMAIL_ADDRESS>a zip file. Likewise, follow the correct file naming format.
- Emailing/Remind101-ing/texting me a link to a GitHub gist/repo.
I'm not going to tell you specifics about how I will score your submissions. But here are some general points to consider:
- I will take a head count of how many people took this pretest. This will be used to determine the average score; if you do not submit, I will just put in a score of zero when calculating this average. I will also be looking at score distributions to see how much difference there is in programming skills within this class.
- There are tentative point values listed under each question. You may or may not receive all of those points. This will depend on several factors I'm looking at.
- This includes things like do you have the right idea (I give partial credit); is your code easy to follow or a jumbled mess of tangled logic; did you plagiarize from online (I will be checking! StackOverflow, GitHub, several others); etc.
- I will not be looking too much into things like code formatting and variable naming. Single-letter variable names are ok, if you know what you're doing. If you confuse yourself by doing this, its your fault.
- Problems towards the end are much more difficult than the first ten or so problems. If you know you can do well, I wouldn't waste my time on the first few.
- All submissions will be due by Monday, September 30 at 3:00pm. If you make any more edits to your code after that there is no guarantee that I will see it.
Problems
Starting Out
For these first few problems, I'm not providing testset generators. There's no testsets needed! Also, for problems where the testset code may reveal a key hint about the solution, I will not be providing testsets. You'll have to read the problem carefully and reference the examples to check your solution.
1 point
It's good to have you here! Write a program that outputs Hello, world!.
Specifications:
- filename:
starting.py
- inputs: none
On a first-name basis
Oh, and by the way: the code snippets I provide are a work in progress. If you find any errors (which there definitely are), or if you would like to contribute a language that you wish was there, let me know!
2 points
Ask for the user's name. Output a personalized greeting that includes their name.
Specifications:
- filename:
customgreeting.py
- inputs: User input through
stdin
.
The Lazy Greeter
3 points
Some people have really long names (ask Hubert Blaine Wolfeschlegelsteinhausenbergerdorff Sr., who held the record for the longest personal name ever used); it's hard to remember all those letters! Only output a personalized greeting when the name is shorter than 7 characters, otherwise complain that the name is too lengthy.
Specifications:
- filename:
lazygreeting.py
- inputs: User input through
stdin
.
Examples:
- input:
Bob
- output:
Hello, Bob!
- explanation:
Bob
is 3 characters long, which is less than 7. - input:
Alexander
- output:
Your name is way too long.
- explanation:
Alexander
is 9 characters long, which is not less than 7.
Dumb Calculator
6 points
Math is really hard, and sometimes we expect too much from our computers. Create a low-expectations calculator that adds two numbers together and outputs the result only if the two numbers are not equal to each other and their sum is smaller than 20.
Specifications:
- filename:
dumbcalc.py
- inputs: 2 user inputs through
stdin
.
Examples:
- input:
2
,5
- output:
7
- explanation: 2+5=7, which is less than 20.
- input:
11
,10
- output:
Too hard!
- explanation: 11+10=21, which is not less than 20.
- input:
9
,9
- output:
Not possible
- explanation: 9=9.
Multiplier
testMultiply = function() {
for(let i = 0; i < 100; i++) {
let a = Math.floor(Math.random() * (46341));
let b = Math.floor(Math.random() * (46341));
if(multiply(a, b) != a*b) {
console.log("Submission failed for a=" + a + ", b=" + b);
return 1;
}
}
console.log("Submission accepted!");
return 0;
}
from random import randint
def testMultiply():
for x in range(100):
a = randint(0, 46340)
b = randint(0, 46340)
if multiply(a, b) != a*b:
print("Submission failed for a=", a, ", b=", b)
return 1
print("Submission accepted!")
return 0
public class Multiplier {
public static int multiply(int a, int b) {
// TODO Implement me!
}
public static void main(String[] args) {
for(int i = 0; i < 100; i++) {
int a = (int) (Math.random() * 46341);
int b = (int) (Math.random() * 46341);
if(multiply(a, b) != a*b) {
System.out.println("Submission failed for a=" + a + ", b=" + b);
return;
}
}
System.out.println("Submission accepted!");
return;
}
}
4 points; 8 points if extra challenge is completed
Functions are reusable pieces of code, like tools in a toolbox that you can use in different ways for whatever you need. Write a function that returns the product of two integers. Extra challenge: can you do this without using the * operator?
Specifications:
- filename:
multiplier.py
- function signature:
multiply(a: Int, b: Int) -> Int
- constraints:
a
,b
∈ ℤ; |a
| <= 46340; |b
| <= 46340.
Examples:
- call:
multiply(13, 16)
- returns:
208
- explanation: 13*16=208.
- input:
multiply(3, 14159)
- returns:
42477
- explanation: 3*14159=42477.
Temperature translator
// you can use the below two functions in any way you want
function getRandomTemp() {
return Math.random() * 300 - 150;
}
function getRandomUnit() {
return (Math.random() > 0.5) ? "fahrenheit" : "celsius";
}
// just a suggestion
testTranslate = function() {
for(let i = 0; i < 100; i++) {
let temp = getRandomTemp();
let unit = getRandomUnit();
console.log(temp + ", " + unit + ", " + convertTemp(temp, unit));
}
}
import random
# you can use the below two functions in any way you want
def getRandomTemp():
return random.uniform(-150, 150)
def getRandomTemp():
return "fahrenheit" if random.choice([True, False]) else "celsius"
# just a suggestion
def testTranslate():
for i in range(100):
temp = getRandomTemp()
unit = getRandomUnit()
print(temp, ",", unit, ",", convertTemp(temp, unit))
public class TempConvert {
// you can use the below two functions in any way you want
private static double getRandomTemp() {
return Math.random() * 300 - 150;
}
private static String getRandomUnit() {
return (Math.random() > 0.5) ? "fahrenheit" : "celsius";
}
public static double convertTemp(double from, String toUnit) {
// TODO Implement me!
}
// just a suggestion
public static void main(String[] args) {
for(let i = 0; i < 100; i++) {
double temp = getRandomTemp();
String unit = getRandomUnit();
System.out.println(temp + ", " + unit + ", "
+ convertTemp(temp, unit));
}
}
}
6 points
Bumpy (living in America) loves to talk on the phone to his best buddy, Lumpy (living in England) about the weather. However, since neither of them are particularly bright, each can't understand how the other's temperature scale works. When they go to Google Translate, they are unable to find either Fahrenheit or Celsius as a language to convert to. Help Bumpy and Lumpy by writing a function that can convert between Celsius and Fahrenheit.
Specifications:
- filename:
tempconvert.py
- function signature:
convertTemp(x: Float, toUnit: String) -> Float
Examples:
- call:
convertTemp(0, "fahrenheit")
- returns:
32
- explanation: 0 is assumed to be Celsius, since you want to convert to
Fahrenheit; 0°C = 32°F.
- call:
convertTemp(67.21, "celsius")
- return:
19.561111
- explanation: 0 is assumed to be Fahrenheit, since you want to convert to Celsius; 67.21°F = 19.561111°C.
99 Bottles of Beer
There's no real way for me to provide you with much for this one, but I can give you the lyrics so you don't have to go look them up.
99 bottles of beer on the wall, 99 bottles of beer.
Take one down and pass it around, 98 bottles of beer on the wall.
98 bottles of beer on the wall, 98 bottles of beer.
Take one down and pass it around, 97 bottles of beer on the wall.
...
2 bottles of beer on the wall, 2 bottles of beer.
Take one down and pass it around, 1 bottle of beer on the wall.
1 bottle of beer on the wall, 1 bottle of beer.
Take one down and pass it around, no more bottles of beer on the wall.
No more bottles of beer on the wall, no more bottles of beer.
Go to the store and buy some more, 99 bottles of beer on the wall.
8 points
99 Bottles of beer on the wall, 99 bottles of beer. take one down and pass it
around, 98 bottles of beer on the wall. Output all of the lyrics to this song.
Specifications:
- filename:
bottlesofbeer.py
- input: none
MishMash
8 points
Dish and Dash are playing a game where they take turns and say a number, counting up from 1. But, there's some special rules that make this game more difficult. If the number is divisible by 7, they have to say "Mish". If it's divisible by 13, they have to say "Mash". Finally, if it's divisible by both, they have to say "MishMash". Write a program that outputs the first 1,000 turns of this game.
Specifications:
- filename:
mishmash.py
- input: none
Collatz Conjecture
// Just a little convenience so you don't have to worry about it :)
function randInt() {
return Math.floor(Math.random() * 1000000 + 1);
}
import random
# Just a little convenience so you don't have to worry about it :)
def randInt():
return random.randint(1, 1000000)
class Collatz {
// Just a little convenience so you don't have to worry about it :)
private static int randInt() {
return (int) (Math.random() * 1000000 + 1);
}
}
8 points
Wikipedia states that "The Collatz conjecture is a conjecture in mathematics that concerns a sequence defined as follows: start with any positive integer n. Then each term is obtained from the previous term as follows: if the previous term is even, the next term is one half the previous term. If the previous term is odd, the next term is 3 times the previous term plus 1. The conjecture is that no matter what value of n, the sequence will always reach 1." For an integer n, print out each step until it arrives at 1.
Specifications:
- filename:
collatz.py
- input:
x
∈ Z; 0 <x
< Integer.maxVal
Examples:
- input:
7
- output:
7 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
- explanation: The sequence proceeds as according to the Collatz conjecture.
- input:
23
- output:
23 70 35 106 53 160 80 40 20 10 5 16 8 4 2 1
- explanation: The sequence proceeds as according to the Collatz conjecture.
Forgetful Echo
14 points
In Greek mythology, Echo was a nymph who repeated everything that was said to her. Unfortunately, recently she has become a little bit forgetful, and is only able to repeat half of what is said to her. Given a sentence, output half of the sentence (in terms of word count, not characters). If the sentence is an odd number of words long, round up.
Specifications:
- filename:
echo.py
- input: String containing only alphabetic characters and single spaces.
Examples:
- input:
To be or not to be that is the question
- output:
To be or not to
- explanation: The sentence is 10 words long; Echo only remembers 5 of them.
- input:
Talk is cheap show me the code
- output:
Talk is cheap show
- explanation: The sentence is 7 words long; Echo only remembers 4 of them.
Pythagorean Theorem
testPythagorean = function() {
for(let i = 0; i < 100; i++) {
let a = Math.random() * 200;
let b = Math.random() * 200;
if(abs(pythagorean(a, b) - Math.hypot(a, b)) > 0.0001) {
console.log("Submission failed for a=" + a + ", b=" + b);
return 1;
}
}
console.log("Submission accepted!");
return 0;
}
from random import uniform
from math import hypot
def testPythagorean():
for x in range(100):
a = uniform(0, 200)
b = uniform(0, 200)
if abs(pythagorean(a, b) - math.hypot(a, b)) > 0.0001:
print("Submission failed for a=", a, ", b=", b)
return 1
print("Submission accepted!")
return 0
public class Pythagorean {
public static double pythagorean(double a, double b) {
// TODO Implement me!
}
public static void main(String[] args) {
for(int i = 0; i < 100; i++) {
double a = Math.random() * 200;
double b = Math.random() * 200;
if(abs(pythagorean(a, b) - Math.hypot(a, b)) > 0.0001) {
System.out.println("Submission failed for a=" + a + ", b=" + b);
return;
}
}
System.out.println("Submission accepted!");
return;
}
}
8 points; 16 points if extra challenge is completed
The Pythagorean Theorem states that in any Euclidean right triangle, the square
of the length of the hypotenuse, or the side opposite the right angle, is equal
to the sum of the squares of the other two legs. Implement the Pythagorean
Theorem. You may not use any built in stdlib
functions except pow()
and
sqrt()
.
Bonus: Can you implement the Pythagorean Theorem without using any
stdlib
functions?
Specifications:
- filename:
pythagorean.py
- function signature:
pythagorean(a: Float, b: Float) -> Float
Examples:
- call:
pythagorean(3, 4)
- returns:
5.0
- explanation: 3-4-5 is the famous Pythagorean triple;
$\sqrt{3^2+4^2}=\sqrt{25}=5.$
- call:
pythagorean(2.5416, 1.84658)
- return:
3.141590084
Mix n' Match
10 points
Catherine the caterpillar has a hard time figuring out what to wear every day. She has two outfits, which are sets of shirts for each segment of her body. Today, she wants to combine two outfits, by alternating one shirt from each outfit. Write a function that takes two lists, representing shirts, and combines them into one, taking one item from each list alternately.
Specifications:
- filename:
mixnmatch.py
- signature:
mix(a: [Any], b: [Any]) -> [Any]
Examples:
- call:
mix([1, 2, 3] , ['a', 'b', 'c'])
- returns:
[1, 'a', 2, 'b', 3, 'c']
- explanation: Take the first element from list A, then the first from list B,
then the second from list A, then the second from list B, and so on.
- call:
mix(["hello"] , ["there"])
- returns:
["hello", "there"]
- explanation: Take the first element from list A, then the first from list B, then the second from list A, then the second from list B, and so on.
ATOI
testATOI = function() {
for(let i = 0; i < 100; i++) {
let a = Math.floor(Math.random() *<PHONE_NUMBER> -<PHONE_NUMBER>);
if(atoi(a.toString()) != a) {
console.log("Submission failed for a=" + a);
return 1;
}
}
console.log("Submission accepted!");
return 0;
}
from random import randint
def testATOI():
for x in range(100):
a = randint(-1073741824,<PHONE_NUMBER>)
if atoi(str(a)) != a:
print("Submission failed for a=", a)
return 1
print("Submission accepted!")
return 0
public class ATOI {
public static int atoi(String x) {
// TODO Implement me!
}
public static void main(String[] args) {
for(int i = 0; i < 100; i++) {
double a = Math.floor(Math.random() *<PHONE_NUMBER> -<PHONE_NUMBER>);
if(atoi(a.toString()) != a) {
System.out.println("Submission failed for a=" + a);
return;
}
}
System.out.println("Submission accepted!");
return;
}
}
16 points
The C standard library defines a function, atoi()
(ascii-to-integer), that
converts a string containing a number to an integer data type. Implement ATOI
without using any stdlib functions besides string operations. Make sure you
account for negatives. Any use of built-in or stdlib functions for converting
from strings to numerical data type will disqualify credit for this question.
Specifications:
- filename:
atoi.py
- function signature:
atoi(x: String) -> Int
Examples:
- call:
atoi("1776")
- returns:
1776
- explanation: The string containing "1776" is converted to the actual number,
1776.
- call:
atoi("-0000271828")
- returns:
-271828
- explanation: Leading zeros do not affect the value of a number, but a negative sign does.
Enthusiastic Math
14 points; 24 points if extra challenge is completed
In mathematics, especially in the fields of counting and combinatorics, the !
operator - denoting a factorial - is used extensively. The factorial is defined
as the product of all of the natural numbers below a certain integer. For
example, 5! = 5*4*3*2*1
. Zero is a special case; 0! = 1
. Implement a
function that calculates the factorial of a certain number. Bonus points if you
can show this both recursively and iteratively.
Specifications:
- filename:
factorial.py
- function signature:
factorial(x: Int) -> Int
where0 <= x <= 12
.
Examples:
- call:
factorial(0)
- returns:
1
- explanation:
0! == 1
. - call:
factorial(4)
- returns:
24
- explanation:
4! = 4*3*2*1 = 24
.
Recamán's Sequence
12 points
The sequence depicted in the logo of the On-line Encyclopedia of Integer Sequences (OEIS) is Recamán's sequence, which can be succinctly described as "If you can't go backward, go forward." Starting at 0, you try to subtract increasingly larger integers; if you cannot (terms must be non-negative), or the number has been used before, you add instead. The first 16 terms of the sequence are given below.
$$0, 1, 3, 6, 2, 7, 13, 20, 12, 21, 11, 22, 10, 23, 9, 24$$
Write a function that generates the first n terms of Recamán's sequence.
Specifications:
- filename:
recaman.py
- function signature:
recaman(n: Int) -> [Int]
, withn >= 1
.
Examples:
- call:
recaman(1)
- returns:
[0]
- explanation: Return only the first value of Recamán's sequence.
- call:
recaman(4)
- returns:
[0,1,3,6]
- explanation: First element is zero; add one, add two, and then add three (since you can't subtact in any of those cases).
Pascal Rows
20 points
In Pascal's triangle, each row of numbers is one item longer than the previous,
with each item in each row being the sum of the two numbers above it. The first
7 rows of Pascal's triangle are given below.
// print out the first ten rows of Pascal's triangle
testPascal = function() {
let result = "";
for(let i = 0; i < 10; i++) {
let rowArr = pascalRow(i);
for(let j = 0; j < rowArr.length; j++) {
result += rowArr[j] + " ";
}
result += "\n";
}
console.log(result);
}
# print out the first ten rows of Pascal's triangle
def testPascal():
result = ""
for i in range(10):
rowArr = pascalRow(i)
for j in rowArr:
result += j + " "
result += "\n"
print(result)
public class Pascal {
public static int[] pascalRow(int idx) {
// TODO Implement me!
}
public static void main(String[] args) {
String result = "";
for(int i = 0; i < 10; i++) {
int[] rowArr = pascalRow(i);
for(int j = 0; j < rowArr.length; j++) {
result += rowArr[j] + " ";
}
result += "\n";
}
System.out.println(result);
}
}
Rows are zero-indexed, meaning the first row (with just one element, 1) has index zero. Your challenge is to find the row that corresponds to the given index. There are many ways to do this, some being too computationally-intensive, some being too space-intensive. Can you find an efficient way to do this?
Specifications:
- filename:
pascal.py
- function signature:
pascalRow(idx: Int) -> [Int]
where0 <= idx <= 33
.
Examples:
- call:
pascalRow(0)
- returns:
[1]
- explanation: This is the zeroth row of Pascal's triangle, by definition.
- call:
pascalRow(4)
- returns:
[1,4,6,4,1]
- explanation: This is the fourth row of Pascal's triangle.
Luggage Packing
24 points
Pogo is packing for his vacation in Wyoming. He wants to put the heaviest items at the bottom of his suitcase so it does not fall over easily. Being very meticulous, Pogo has weighed all of the items in his suitcase and recorded all of the data. Given a list of weight measurements, sort the weight measurements in non-decreasing order.
Specifications:
- filename:
luggage.py
- function signature:
sortWeights(weights: [Int]) -> [Int]
Examples:
- call:
sortWeights([5,6,4,7,2,3])
- returns:
[2,3,4,5,6,7]
- explanation: No new elements are added to the set, and no elements are
deleted; they are simply rearranged in non-decreasing order.
- call:
sortWeights([0,0,1,0,1,4748527])
- returns:
[0,0,0,1,1,4748527]
- explanation: The elements are returned sorted from least to greatest.
Riemann Sum
24 points; 30 points if extra challenge is completed There are many ways to approximate the area between a curve and the x-axis. One common method is to use a Riemann Sum, which splits up the area into very tiny rectangles. The general form of a Left Riemann Sum is given as such:
The area under the curve $f(x)$ with bounds $a$ and $b$ is given by
$$A=\lim_{n\to\infty}{\sum^n_{i=1}f(x_i)\Delta x},$$
where $\Delta x = \frac{b-a}{n}$. Note that the higher n is, the more accurate the area estimation will be, because there will be more small rectangle subdivisions. Your challenge will be to implement a Riemann sum calculator.
Use code to approximate the area under the function
$$f(x)=\frac{x^4(1-x)^4}{1+x^2}$$
from $0$ to $1$. Then, multiply the value by $-1$, and add $\frac{22}{7}$. Print the final result. Extra challenge: can you generalize the Riemann sum function to take any function as a parameter (lambda or first-class) and return the Riemann sum with arbitrary precision?
Specifications:
- filename:
riemann.py
- input: none
- (extra challenge) function signature:
riemann(f: Function, from: Float, to: Float, subintervals: Int) -> Float
Mirror, Mirror, on the Wall
24 points
Gerald has a Strange Mirror which, instead of flipping images horizontally and
reflecting them back, flips images across a diagonal line from the top-left
corner down and to the right such that NxM
images become MxN
. For example,
this image:
$$ \begin{bmatrix} 2 & 6 & -3 \\ 7 & -5 & 1 \end{bmatrix} $$
is transposed to:
$$ \begin{bmatrix} 2 & 7 \\ 6 & -5 \\ -3 & 1 \end{bmatrix}. $$
Create a function that, given an input image, returns what will be reflected by Gerald's Strange Mirror.
Specifications:
- filename:
mirror.py
- function signature:
transpose(input: [[Int]]) -> [[Int]]
Roman Numerals
36 points
A bombshell study released by a group of world-renown archaeologists has revealed that contrary to popular belief, Caesar was not stabbed to death by Brutus and the Senate; instead, in a freak physics phenomenon, he was sucked through a wormhole and teleported to present times. Caesar is appalled by the number system used here. Implement a function that converts from decimal numbering to roman numerals to better help him understand his new life as a Walmart cashier.
Specifications:
- filename:
romannumerals.py
- function signature:
toRomanNumerals(num: Int) -> String
Examples:
- call:
toRomanNumerals(14)
- returns:
"XIV"
- explanation: This is a string with the Roman numeral representation of
14
. - call:
toRomanNumerals(2019)
- returns:
"MMXIX"
- explanation: This is a string with the Roman numeral representation of
2019
.
No Plagiarism, Please
40 points
Mr. Kopikat, unable to understand why his excessively boring assignments have
made his students uninterested and unmotivated, has recently been having
problems with students in his English class copying work from online instead of
writing it themselves. Help him write a plagiarism checker function that,
given a short phrase, checks whether or not it is contained in a larger body
phrase. You may only use charAt()
functions if your language provides it; you
may not use built-in substring or regex functions.
Specifications:
- filename:
kopikat.py
- function signature:
checkPlagiarism(query: String, body: String) -> Boolean
Examples:
- call:
checkPlagiarism("is", "A single death is a tragedy; a million deaths is a statistic.")
- returns:
true
- explanation: The query string, "is", is found in the body string. The student
must have plagiarized!
- call:
checkPlagiarism("walrus", "It is better to be feared than loved, if you cannot be both.")
- returns:
false
- explanation: The query string, "walrus", is not found anywhere in the body string. A trustworthy student.
Prophetic Warren Buffett
54 points
Warren Buffett, making a deal with a treacherous genie, wished to have the ability to foresee stock prices. While technically granting the wish, the genie gave him so much data that he is now overloaded with hundreds of numbers and does not know how to comprehend all of it. Can you help him outsmart the genie by writing a function that automatically sifts through the data and determines the maximum profit possible from buying and selling stocks optimally?
Specifications:
- filename:
stockprofit.py
- function signature:
findProfit(prices: [Float]) -> Float
Examples:
- call:
findProfit([14.09, 11.66, 14.01, 15.38, 12.42])
- returns:
2.96
- explanation: The most optimal time to buy is when the stock is worth \$15.38;
the most optimal time to sell is when it is worth \$12.42; thus your profit is
\$15.38 - \$12.42 = \$2.96.
- call:
findProfit([19.68, 19.23, 19.05, 15.0, 13.13, 12.67, 12.57, 11.45])
- returns:
0
- explanation: There is no time to buy and then sell such that you can make a profit. Better to not buy at all!
Weird Plots of Land
78 points
As a rough first day on the job, Nodnarb, a novice surveyor, was asked to survey a weirdly-shaped plot of land and find the area of it. Unsure what to do, Nodnarb flew his drone up such that it was directly above the parcel of land, showing that the land was in the shape of an irregular, convex polygon. He recorded the coordinates of the vertices of the land plot in meters in a counterclockwise fashion. Write a function that, from this list of coordinates, determines the area of the land.
Specifications:
- filename:
weirdland.py
- function signature:
findArea(coordinates: [(Int,Int)]) -> Float
Iconic Skylines
64 points
Huge, famous cities around the world are recognizable just by their skylines: New York, Seattle, London, Shanghai, and most notably the city of Aaaaak. However, recently Aaaaak has been facing population problems as people flock to the city for the countless opportunities that it offers. How many stories can Aaaaak build up without changing its world-famous skyline viewed from any angle (front, right, left, back)? Assume in Aaaaak buildings are perfectly square, and every story is the same height. The current heights (in stories) of all the skyscrapers is reported in a 2d array of integers. Return the maximum number of stories that Aaaaak can build to solve its population problem.
Specifications:
- filename:
skylines.py
- function signature:
getMaxStories(cityMap: [[Int]]) -> Int
Big Number Builder
84 points
Given a list of integers, find the largest number possible created by the concatenation of those numbers. Brute-search methods, e.g. generating every possible number from the list and finding the maximum by comparing those numbers, will not be accepted. There is a more elegant way to do it that is much more efficient than $O(n!)$ time.
Specifications:
- filename:
numberbuilder.py
- function signature:
buildBigNumber(from: [Int]) -> Int
Examples:
- call:
buildBigNumber([32, 16, 85, 7])
- returns:
85473216
- explanation: Using all numbers, the largest number possible is 85,473,216.
- call:
buildBigNumber([1, 641, 16, 8])
- returns:
8641161
- explanation: Using all numbers, the largest number possible is 8,641,161.
Bored Monkeys
96 points
You have $N$ monkeys at $N$ different stations doing different activities (eating bananas, getting massages, swinging around in trees, etc), with only one monkey at a station at a time. After a while, all of the monkeys get bored with their station and want to switch somewhere else. In how many ways can you rearrange the monkeys such that no monkey is at its original station?
Specifications:
- filename:
monkey.py
- function signature:
getPermutations(n: Int) -> Int
Examples:
- call:
getPermutations(4)
- returns:
9
- explanation: With 4 monkeys and 4 stations, there are 9 ways to rearrange them
such that none are in their original spot; if we name the monkeys Deborah,
Pam, Susan, and Karen (with their order indicating which station they begin),
we can reorder them as such:
- Karen, Susan, Deborah, Pam
- Pam, Deborah, Karen, Susan
- Pam, Karen, Deborah, Susan
- Karen, Deborah, Pam, Susan
- Pam, Susan, Karen, Deborah
- Susan, Karen, Deborah, Pam
- Karen, Susan, Pam, Deborah
- Susan, Karen, Pam, Deborah
- Susan, Deborah, Karen, Pam
- call:
getPermutations(12)
- returns:
176214841
- explanation: With 12 monkeys in 12 stations, there are 176,214,841 ways to rearrange them.
It's Complex
100 points for all functionality implemented
Complex numbers, an extension of the real number system, can be represented in a two-dimensional plane with a real component and an imaginary component $i$, where $i\cdot i=-1$. Implement complex numbers and basic operations. If you implement raising complex numbers to arbitrary powers, i.e. $(a+bi)^n$, I will reward bonus points.
Specifications:
- filename:
complex.py
- class constructor:
Complex(realpart: Float, complexpart: Float)
- required functionality: Adding, subtracting, multiplying, dividing, conjugate, magnitude. optional: exponentiating
Listless Lists
120 points for all functionality implemented
Implement a list data type without using any built-in arrays, lists, or stdlib
collections. You must also implement creating, pretty-printing, getting, and
setting to receive full credit. If you are using python or another
dynamically-typed language, your list must support any type. Additional
algorithms, such as sorting, will earn extra points.
Specifications:
- filename:
mylist.py
- class constructor:
MyList(), MyList(length: Int), MyList(from: [Object])
- required functionality: Creating, printing, getting, setting. optional: sorting, searching, copying, reversing, etc.
Gradual Edits
150 points
Given a list of similar-looking words, ex. ["pig", "pic", "tic", "dog", "pog"] determine if there is a way to, starting at one word, arrive at another word by only moving between one-word modifications. For example, from "dog" to "tic", there is a way: "dog" -> "pog" -> "pig" -> "pic" -> "tic". If so, return that path as an array. If not, return null.
Specifications:
- filename:
edits.py
- function signature:
gradualEdit(wordlist: [String], fromIdx: Int, toIdx: Int) -> [String]
Examples:
- call:
gradualEdit(["pig", "pic", "tic", "dog", "pog"], 3, 2)
- returns:
["dog", "pog", "pig", "pic", "tic"]
- explanation: You want to go from "dog" to "tic"; there is a path that exists,
editing one letter at a time. Return that path in an array.
- call:
gradualEdit(["pig", "pic", "tic", "dog"], 3, 2)
- returns:
null
- explanation: You want to go from "dog" to "tic"; however, there is no path
that you can take in which you only edit one letter at a time. So, return
null
.
Puddles
180 points
Puddles form in ruts and holes in the ground. But how much water can a surface hold? Given a 2d matrix of ground elevation for a square of land in inches, calculate the maximum amount of rain the piece of land can hold. Remember, water will flow off of the sides; do not imagine the sides of the model as able to hold water as well.
Specifications:
- filename:
puddles.py
- function signature:
puddles(map: [[Int]]) -> Int


chrcvt65 is a vector font converter. It is able to convert a "BGI Stroked Font" to a compact TGI native vector font. See the function tgi_load_vectorfont for usage.
The chrcvt65 utility converts the font of one Borland file to its cc65 equivalent.
The program may be called as follows:
---------------------------------------------------------------------------
Usage: chrcvt65 [options] file [options] [file]
Short options:
-h Help (this text)
-v Be more verbose
-V Print the version number and exit
Long options:
--help Help (this text)
--verbose Be more verbose
--version Print the version number and exit
---------------------------------------------------------------------------
Here is a description of all the command line options:
-v, --verbose
Increase the converter verbosity.
-h, --help
Print the short option summary shown above.
-V, --version
Print the version number of the utility. When submitting a bug report, please include the operating system you're using, and the compiler version.
The converter will read one CHR file per invocation and write the font in TCH format to a new file.
Example output for the command
chrcvt65 --verbose LITT.CHR
BGI Stroked Font V1.1 - Aug 12, 1991
Copyright (c) 1987,1988 Borland International
chrcvt65 is (C) Copyright 2009, Ullrich von Bassewitz. For usage of the binaries and/or sources the following conditions apply:
This software is provided 'as-is', without any expressed or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software.
Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions:


The json-storage
feature implements JSON.parse/stringify via JSON2 script and localStorage/sessinStorage.
The Storage support is based on the storage polyfill by Remy Sharp. It uses the window.name-trick to store data for the session and shared object (flash) or a cookie (only, if flash isn't available) for localStorage.
The following Storage-interface is implemented:
Note: That IDL-attributes and the length property aren't implemented.
Note: To use localStorage/sessionStorage you should test your webapp/website in an http-enivroment. IE8 in IE7 mode does have the localStorage-interface, but only works like sessionStorage, we don't fully support this mode. In IETester localStorage isn't currently supported.
$.webshims.ready('json-storage', function(){
if(localStorage.getItem('do-i-know-you') !== null){
//yes
}
});


Photo: Katy Perry arrives in Mumbai ahead of music concert
by TIMESOFINDIA.COMAmerican singer-songwriter Katy Perry was all smiles as she touched down in Mumbai city, ahead of her debut gig at a music festival in the city, set to take place over the weekend. Rocking a de-glam avatar, the songstress was clicked at the airport, in grey sweatpants and a matching hoodie. With a cap on her head and dark glasses on, she put on her best smile for the cameras as she pushed her own bag to her waiting car.
While her big gig is still days away, Katy is sure to busy herself with some touristy stuff and as reported earlier, will party it up with Karan Johar and his Bollywood gang. The director is reportedly hosting a grand cocktail bash for the singer at his residence in Mumbai later this week.
Although this is her first visit to Mumbai city, Perry is no stranger to the country. She previously performed at the opening ceremony of a T20 League in 2012 in Chennai. Before that, she even visited the country on a personal trip with her then actor-comedian beau Russell Brand, who reportedly proposed to her at the Taj Mahal. They later tied the knot in a lavish ceremony in Rajasthan but sadly parted ways two years later.
Also expected to arrive in the city is British Pop sensation Dua Lipa, who will also be performing at the big gig.
Stay tuned for more updates.


Our coaching services are designed for clients who need expert guidance in regard to achieving their career and educational goals.
Our approach is simple. We focus on understanding our clients and each of their most critical needs in order to deliver value and provide results-based solutions.


Safari IT Books Language Constructs Functional Programming Haskell Safari IT Books Programming Programming Programming Bryan O'Sullivan Donald Bruce Stewart John Goerzen O'Reilly Media, Inc. Real World Haskell, 1st Edition16.2. The sepBy and endBy CombinatorsWe promised you earlier that we could simplify our CSV parser
significantly by using a few Parsec helper functions. There are two that
will dramatically simplify this code. The first tool is the sepBy function. This function takes two functions as arguments: the first
parses some sort of content, while the second parses a separator. sepBy starts by trying to parse content, and
then separators, and alternates back and forth until it can't parse a
separator. It returns a list of all the content that it was able to
parse. The second tool is endBy. It's similar to sepBy, but
expects the very last item to be followed by the separator. That is, it
continues parsing until it can't parse any more content. So, we can use endBy to
parse lines, since every line must end with the end-of-line character. We
can use sepBy to parse cells, since the
last cell will not end with a comma. Take a look at how much simpler our
parser is now: -- file: ch16/csv2.hs
import Text.ParserCombinators.Parsec
csvFile = endBy line eol
line = sepBy cell (char ',')
cell = many (noneOf ",\n")
eol = char '\n'
parseCSV :: String -> Either ParseError [[String]]
parseCSV input = parse csvFile "(unknown)" input
This program behaves exactly the same as the first one. We
can verify this by using ghci to rerun
our examples from the earlier example. We'll get the same result from
every one. Yet the program is much shorter and more readable. It won't be
long before you can translate Parsec code such as this into a file format
definition in plain English. As you read over this code, you can see
that: A CSV file contains zero or more lines, each of which
is terminated by the end-of-line character. A line contains one or more cells, separated by a
comma. A cell contains zero or more characters, which must be
neither the comma nor the end-of-line character. The end-of-line character is the newline, \n.
|


| 12 Aug 1930 |
George Soros born, Budapest Hungary. |
| 1944 |
Hides for a year from the Nazis, after they invade Hungary. |
| 1947 |
Leaves Hungary for Britain to attend London School of Economics. |
| 1956 |
Moves to United States. |
| 1969 |
Establishes Quantum Fund, and dabbles in currency manipulation. Average return of that fund is an astonishing 35% per year, since its inception. |
| 1979 |
Establishes Open Society Fund, New York City. |
| 16 Sep 1992 |
In a brazen act of currency speculation, places a hedge bet that the UK will devalue the Pound Sterling. In September this nets him $1B in a single day. |
| 1995 |
Appointed director, Council on Foreign Relations. |
| 1997 |
Attacks the currencies of Thailand and Malaysia. A Thai source said: "We regard George Soros as a kind of Dracula.  [Heather Coffin, Covert Action Quarterly.] |
| 2002 |
Convicted of insider trading, with regards to the stock of a French bank in 1988. Fined $2M. |
| Nov 2002 |
Soros is the primary sponsor of Nevada's ballot initiative to legalize marijuana. |
| 12 Sep 2003 |
"If you impose morality on [business], it means that you are actually with your hands tied behind your back and you're not going to be successful. It's extremely hard to be successful." Interview, David Brancaccio, Now with Bill Moyers. |
| 7 Nov 2003 |
Moscow offices of the Soros Foundation stormed by forty armed men who seize papers and seal the building, after Soros criticized the recent jailing of one of Russia's oligarchs, Mikhail Khodorkovsky of oil company Yukos. The building's owner claims rent was not being paid, an unlikely explanation. |
| 31 Mar 2004 |
While appearing at a human rights conference in Kiev, Ukraine, George Soros is splattered with water and mayonnaise by two members of the radical nationalist group, Bratstvo. |
| 29 Aug 2004 |
During an interview on Fox News Sunday with host Chris Wallace, Speaker of the House Dennis Hastert insinuates Soros is funneling profits from drug cartels to special interest groups (a baseless accusation):
| HASTERT: |
You know, I don't know where George Soros gets his money. I don't know where — if it comes overseas or from drug groups or where it comes from. And I... |
| WALLACE: |
Excuse me? |
| HASTERT: |
Well, that's what he's been for a number years — George Soros has been for legalizing drugs in this country. So, I mean, he's got a lot of ancillary interests out there. |
| WALLACE: |
You think he may be getting money from the drug cartel? |
| HASTERT: |
I'm saying I don't know where [527] groups — could be people who support this type of thing. I'm saying we don't know. The fact is we don't know where this money comes from. |
|
| 31 Aug 2004 |
In response to Dennis Hastert's comments on Fox News Sunday, George Soros sends Hastert a fax addressing the allegations:
Your recent comments implying that I am receiving funds from drug cartels are not only untrue, but also deeply offensive.  You should be ashamed.
[...]
This past Sunday, on national television, you suggested that I might be a criminal simply because I have exercized my First Amendment rights to dissent from the policies of the Bush administration.
[...]
I must respectfully insist that you either substantiate these claims--which you cannot do because they are false--or publicly apologize for attempting to defame my character and damage my reputation.
|


--- title: United States Hamiltonian Paths layout: post tags: [math, elisp, lisp] uuid: 4124ec41-1b0a-3a60-a8a2-9667a2243cad ---
Awhile ago I wanted to find every Hamiltonian path in the contiguous 48 states. That is, trips that visit each state exactly once. Writing a program to search for Hamiltonian paths is easy (I did this already). The most time consuming part was actually putting together the data that specified the graph to be searched. I hope someone somewhere finds it useful. Here is a map for reference,
It took me several passes before I stopped finding errors. I think I have it all right now, but there could still be some mistakes. If you see one, leave a comment and I'll fix it here. Here is the graph as an S-expression alist; the car (first) element in each list is a state, and the cdr (rest) is the unordered list of states that can be reached from it.
((me nh) (nh vt ma me) (vt ny ma nh) (ma ri ct ny nh vt) (ny pa nj ma ct vt) (ri ma ct) (ct ri ma ny) (nj pa ny de) (de md pa nj) (pa nj ny de md wv oh) (md pa de va wv) (va md wv ky tn nc) (nc va tn ga sc) (sc nc ga) (ga fl sc al nc tn) (al ms fl ga tn) (ms la ar tn al) (tn ms al ga nc va ky mo ar) (ky wv va tn mo il in oh) (wv md pa oh ky va) (oh pa wv ky in mi) (fl al ga) (mi wi oh in) (wi mn ia il mi) (il in ky mo ia wi) (in oh ky il mi) (mo il ky tn ar ok ks ne ia) (ar mo tn ms la tx ok) (la ms ar tx) (tx ok nm ar la) (ok ks mo ar tx nm co) (ks ok co ne mo) (ne sd ia mo ks co wy) (sd nd mn ia ne wy mt) (nd mt sd mn) (ia ne mo il wi mn sd) (mn wi ia sd nd) (mt id wy sd nd) (wy id ut co ne sd mt) (co ne ks ok nm ut wy) (nm co ok tx az) (az nm ut ca nv) (ut nv id wy co az) (id mt wy ut nv or wa) (wa or id) (or wa id nv ca) (nv or id ut az ca) (ca az nv or))
Note that all paths must start or end in Maine because it connects to only one other state.


vignettes/a_quick_start.Rmd
a_quick_start.Rmd
Author: Zuguang Gu<EMAIL_ADDRESS>)
Date: 2020-02-06
Package version: 1.3.3
Assume your matrix is stored in an object called mat
, to perform consensus partitioning with cola, you only need to run following code:
# code only for demonstration
mat = adjust_matrix(mat) # optional
rl = run_all_consensus_partition_methods(mat, mc.cores = ...)
cola_report(rl, output_dir = ..., mc.cores = ...)
In above code, there are three steps:
NA
s are removed. Rows with very low variance are removed. NA
values are imputed if there are less than 50% in each row. Outliers are adjusted in each row.hclust
(hierarchical clustering with cutree), kmeans
(k-means clustering), skmeans::skmeans
(spherical k-means clustering), cluster::pam
(partitioning around medoids) and Mclust::mclust
(model-based clustering). The default methods to extract top n rows are SD
(standard deviation), CV
(coefficient of variation), MAD
(median absolute deviation) and ATC
(ability to correlate to other rows).There are examples on real datasets for cola analysis that can be found at https://jokergoo.github.io/cola_collection/.


Sahyadri Agencies sells 3.5% stake in Jyothy Labs for Rs 224 cr
The shares have been picked up by ICICI Lombard General Insurance, Bajaj Allianz Life Insurance, Reliance Mutual Fund, UTI Mutual Fund, Mirae Asset Mutual Fund and Aurigin Master Fund.
by PTISahyadri Agencies, a promoter of Jyothy Labs, on November 1 divested 3.5 per cent stake in the homegrown FMCG firm for Rs 224 crore through open market transactions.
The shares have been picked up by ICICI Lombard General Insurance, Bajaj Allianz Life Insurance, Reliance Mutual Fund, UTI Mutual Fund, Mirae Asset Mutual Fund and Aurigin Master Fund.
According to block deal data available with the National Stock Exchange (NSE), Sahyadri Agencies sold a total of 1,29,17,000 shares, which is equivalent to 3.5 per cent stake of Jyothy Labs.
The shares were offloaded on an average price of Rs 173.4, valuing the transaction at Rs 224 crore, the data showed.
At the end of the September quarter, Sahyadri Agencies held 8.17 per cent stake in Jyothy Labs, maker of Margo soap and Henko and Mr White detergent.
Shares of Jyothy Labs closed 1 per cent lower at Rs 173.4 on the National Stock Exchange.Special Thursday Expiry on 10th 7th Nov
Early Closure to The Great Diwali Discount. Last Chance to get Moneycontrol PRO for a year @ Rs. 289/- only
Coupon code: DIWALI


Updates - April 2018
Initial Access Tactic Addition
Initial Access was added to ATT&CK and some techniques were added to Execution to cover the Launch and Compromise techniques within PRE-ATT&CK. The techniques were refactored to fit the enterprise level of detail.
The following techniques were added under Initial Access:
- Drive-by Compromise
- Exploit Public-Facing Application
- Hardware Additions
- Spearphishing Attachment
- Spearphishing Link
- Spearphishing via Service
- Supply Chain Compromise
- Trusted Relationship
The following existing techniques were cross-referenced into Initial Access:
The following techniques were added to Execution:
Techniques
Aside from those added from PRE-ATT&CK, 23 additional new techniques were added - Up to 219 from 188:
- CMSTP
- Control Panel Items
- BITS Jobs
- SIP and Trust Provider Hijacking
- Password Policy Discovery
- Indirect Command Execution
- Exploitation for Client Execution
- User Execution
- Port Knocking
- Sudo Caching
- DCShadow
- Kerberoasting
- Time Providers
- Exploitation of Remote Services
- Exploitation for Defense Evasion
- Exploitation for Credential Access
- Data from Information Repositories
- Credentials in Registry
- Kernel Modules and Extensions
- Signed Script Proxy Execution
- Browser Bookmark Discovery
- Signed Binary Proxy Execution
- Remote Access Tools
One technique renamed
NTFS Extended Attributes -> NTFS File Attributes
Moderate to major updates to scope and/or content
Groups and Software
Nine new groups:
Group Updates Patchwork combined with Monsoon, G0042 redirects to G0040
Groups with New Techniques Added
45 new software entries:
- ISMInjector
- BITSAdmin
- Winexe
- Pupy
- Forfiles
- PowerSploit
- SDelete
- PUNCHBUGGY
- PUNCHTRACK
- NETWIRE
- TURNEDUP
- Dipsind
- JPIN
- adbupd
- Hydraq
- Briba
- Naid
- Wiarp
- Vasport
- Pasam
- Darkmoon
- Nerex
- Linfo
- CORALDECK
- DOGCALL
- HAPPYWORK
- KARAE
- POORAIM
- SHUTTERSPEED
- SLOWDRIFT
- WINERACK
- Chaos
- Umbreon
- CCBkdr
- POWERSTATS
- Havij
- sqlmap
- Smoke Loader
- spwebmember
- NanHaiShu
- Orz
- ZeroT
- Invoke-PSImage
- HOMEFRY
- MURKYTOP
Other Changes
Exploitation of Vulnerability Breakout - With the addition of Initial Access, more clarity was needed to define software exploitation behavior. The original Exploitation of Vulnerability technique was broken out into six variations specifically for individual tactics.
- Initial Access - Exploit Public-Facing Application
- Execution - Exploitation for Client Execution
- Privilege Escalation - Exploitation for Privilege Escalation: maintains the original Exploitation of Vulnerability technique ID T1068
- Lateral Movement - Exploitation of Remote Services
- Defense Evasion - Exploitation for Defense Evasion
- Credential Access - Exploitation for Credential Access
Software Platforms - Added Windows, Linux, and macOS tags for software objects.
What's New in PRE-ATT&CK?
This release deprecates the Launch and Compromise tactics and most of the techniques that belong to them. In the future, these TTPs will be covered by techniques in the Initial Access and Execution tactics on ATT&CK.
- 2 tactics deprecated: Launch and Compromise
- Disseminate removable media has been moved from Launch to Stage Capabilities
- A new technique, Spearphishing for Information, has been added to Technical Information Gathering
- 23 techniques have been deprecated in this release
- PRE-ATT&CK now comprises 15 tactics and 151 techniques


IBV genes expression infection hpi virus gene influenza cells time (Figure cell response âˆ’ immune pathway []. signaling viral cellular human observed used TLR up-regulated {border-style px;} #ffffff;} Influenza innate host pathways using analysis epithelial Figure infection, Table data down-regulated infection. regulated RNA cycle including points study IFN RNA-Seq RT-qPCR cells. levels replication significantly USA) enriched expressed S). activated cells, following results showed significant < DNA IFN-Î», KEGG according antiviral changes disease important lung processes px; {font-family (Table IAV IBV-infected RIG-I Virus differentially followed font-size infected involved level mechanisms performed receptor reported responses studies type CA, CDK, Cell Cells However, Infect. Virol../JVI.- [], analyzed biological change database double; hpi. increased line previous rate result role samples sequencing set sets similar suggesting Gene IRF- Infection [,]. antigen apoptosis border-color border-width cDNA conducted control described did earlier enrichment fold hpi, humans identify later ontology pathway, point processing reads regulation resistance respectively respectively. shown solid; viruses work {font-style {font-weight â€" Analysis Expression G/G Genes Host Human IFN-Î± IFN-Î±, III IRF, PCR Pathway Sequencing TNF [,], activity antigenic arrest bold correlation courier; cytokine detection em; experiment false function humans. included induced infections initiate metabolism method next-generation number observe phase presentation primary protein provide pt;} quality related repair required sensing study, summarized time. tolerance transcriptome validate variants


About the library
Your place to go for links to books, videos, work instructions, product documentation, etc.
- Click the Bookshelf and select a filter to quickly find what you are looking for.
- Login and choose the Reader or Librarian.
- The Reader can checkout physical books.
- The Librarian can update the available books in the Bookshelf.
A library is the delivery room for the birth of ideas, a place where history comes to life.
--Norman Cousins
About the library
Your place to go for links to books, videos, work instructions, product documentation, etc.
- Click the Bookshelf and select a filter to quickly find what you are looking for.
- Login and choose the Reader or Librarian.
- The Reader can checkout physical books.
- The Librarian can update the available books in the Bookshelf.


Computing:
For my Master's degree in Computing, I studied under Dr. Joan Peckham, Dept. Chair of Computer Science and Statistics dept at University of Rhode Island.
M.S Thesis Dissertation, "Kodai: A Software Architecture and Implementation for Segmentation" (2017)
My Thesis focuses on implementing a software architecture and segmentation in a supermarket-dataset. I wrote the web-application in Python that built trends from a clustered supermarket data-set.
Software-Products
Kodai --Software Architecture for Segmentation
Academic
Currently Exploring Neural Information Retrieval, Topic Modelling, Reinforcement Learning.
Tutorials:
1) Transformers from Attention is all you need
Publications
1) YouTube Video Categorization Using Moviebarcode (2020)
Authors:
[1] Recep Erol, [1] Rick Rejeleene, Richard Young, Thomas Marcoux, Muhammad Nihal Hussain, and Nitin Agarwal
Sociology
An Essay on Caste System in Tamil Nadu (2015)
An Introductory Essay about Caste System in Tamil Nadu.
Some of my key-questions, and thoughts were similar to Voltaire's thought:
Initial reactions, when I thought about Caste System were:
a) Getting rid of the whole system and starting it over-again
A Social Insitution or tradition has been passed down throughout generations.
During the French Revolution, institutions such as church, aristrocracy were questioned and discarded.
Perhaps, the Caste-System could be thrown away?
I thought so, but I bumped into Edmund Burke who argues that one cannot throw away social instituations
into thin-air. Change is slow and we must preserve social habits that has worked for generations.
I wrote this During Computer Science Graduate school. I have not met a Computer Scientist who can leap into different
disciplines. This Essay was formed after a dinner with a Ph.D Student.
I am currently reviewing Edgar Thurston's works to gain more understanding. I am due to re-write this in December, 2022.
In Progress: An Essay on Western and Eastern mode of Communication by Rick Rejeleene and Carla White (2020)
Currently, I am writing and gathering thoughts from authors such as Jordan Peterson, Charles Taylor, Richard Nisbett, Jackson Wu, and various books on cross-cultural communication.
This Essay might give answers to core of race-issue, which I argue is value/belief of a group. Our actions come as a result of our values.
Speculative Problems:
I follow the tradition of Natural Philosophers before 1900's. They took interest in nature for the sake of understanding nature.
As I follow their path, I find curiousity and interest in solving real-world problems.
For now, It is extremely broad as I have not narrowed my focus.
Natural Philosophy is concerned with study about nature.
From
School of Salamanca ,
"So knowledge was not parceled out..........the conviction that small truth is related to large truth has been eviscerated." I believe one can
connect this to any discipline.
Human knowledge is all-interconnected.
Leonardo Da-Vinci, Benjamin Franklin and many others followed this.
I'm going to write about interesting problems, solve and upload my solutions here!
On Water and troubles in Tamil Nadu:
I grew up in Tamil-Nadu, India. Water is an important resource and a basic necessity. Unfortunately,
It's not accessible to everyone. A Software Engineer or Federal Employee wakes up with no water in
their apartment or housing. Imagine, this deep trouble.
In Tamil Nadu, rainfall is scarce, especially in Southern Tamil Nadu. Agriculture becomes unsustainable. Many Farmers do not have methods to predict rainfall or find
new sources of water. The Current methods which they use are not constantly thought to be improved.
Finding water is the first-step in meeting the biggest need for Tamil Nadu. It's the heart of their life.
One of the popular-methods to find water is, "dowsing" method. People make assumption about a location using a rod or stick.
The farmer spends atleast $10,000 to find water. He has high-risk of losing his money. It's either boom or bust.
Link to my thoughts
Goal: A low-cost effective way to find water-underground using computational and other Engineering methods.
Currently Working on it: Expected December 2025
Contact: Rick


Likelihood based optimal partitioning and indicator species analysis. Finding the best binary partition for each species based on model selection, with the possibility to take into account modifying/confounding variables as described in Kemencei et al. (2014) <doi:10.1556/ComEc.15.2014.2.6>. The package implements binary and multi-level response models, various measures of uncertainty, Lorenz-curve based thresholding, with native support for parallel computations.
| Version: | 0.1-2 |
| Depends: | R (≥ 3.1.0), pbapply (≥ 1.3-0) |
| Imports: | MASS, pscl, betareg, ResourceSelection (≥ 0.3-2), parallel, mefa4 |
| Published: | 2018-02-01 |
| Author: | Peter Solymos [cre, aut], Ermias T. Azeria [ctb] |
| Maintainer: | Peter Solymos <solymos at ualberta.ca> |
| BugReports: | https://github.com/psolymos/opticut/issues |
| License: | GPL-2 |
| URL: | https://github.com/psolymos/opticut |
| NeedsCompilation: | no |
| CRAN checks: | opticut results |
| Reference manual: | opticut.pdf |
| Package source: | opticut_0.1-2.tar.gz |
| Windows binaries: | r-devel: opticut_0.1-2.zip, r-release: opticut_0.1-2.zip, r-oldrel: opticut_0.1-2.zip |
| OS X binaries: | r-release: opticut_0.1-2.tgz, r-oldrel: opticut_0.1-2.tgz |
| Old sources: | opticut archive |
Please use the canonical form https://CRAN.R-project.org/package=opticut to link to this page.


You walk into your new stranger friends dim house and settle in on his couch. How can an alligator raise a child, you know without eating them, you ask your new stranger friend's back as he walks into the other room. He comes back with a glass of water and a can of seltzer. I've been wondering the same thing. You gulp down beverage and keep talking, I mean that girl looked like she was 8, did it raise her the whole time or is it a new situation, if so how is she so cool with it. Hum your new stranger friend says, I really dont know how you can be around anyone too long without eating them. how long? You say, the room seems like its spinning. At this point your stranger pal says like within the first 5 minutes of meeting someone I want to eat them. Why is this couch sticky? Blood he replies as you pass out.


Homework Note
Subject
Topic
Hand in date
explaination
Add
Subject :
Math
Bio
Chemistry
Physic
Thai
Social
MainEng
SubEng


ThreeTen-Extra provides additional date-time classes that complement those in JDK 8.
Not every piece of date/time logic is destined for the JDK. Some concepts are too specialized or too bulky to make it in. This project provides some of those additional classes as a well-tested and reliable jar.
ThreeTen-Extra is licensed under the business-friendly BSD 3-clause license.
The following are included:
Various documentation is available:
There are no full releases yet! Release 0.8 is the current development release intended for feedback. The code is fully tested, but there may yet be bugs and the API may yet change. There should be no great reason why it cannot be used in production if you can cope with future API change.
The project runs on JDK 8 and has no dependencies.
Available in Maven Central.
Support on bugs, library usage or enhancement requests is available on a best efforts basis.
To suggest enhancements or contribute, please fork the source code on GitHub. Alternatively, use GitHub issues.


Defines the each Equalizer channel settings.
Convenience init
- (nonnull instancetype)initWithChannelId:(UInt8)channelId
channelSetting:(UInt8)channelSetting;
init(channelId: UInt8, channelSetting: UInt8)
Read-only channel / frequency name
Reflects the setting, from 0%-100%.
@abstract Read-only channel / frequency name (e.i. “Treble, Midrange, Bass” or “125 Hz”)
Optional, Max String length 50 chars
@property (nonatomic, strong, nullable) NSString *channelName;
var channelName: String? { get set }
@abstract Reflects the setting, from 0%-100%.
Required, Integer 1 - 100
@property (nonatomic, strong) NSNumber<SDLInt> *_Nonnull channelSetting;
var channelSetting: NSNumber & SDLInt { get set }
@abstract id of the channel.
Required, Integer 1 - 100
@property (nonatomic, strong) NSNumber<SDLInt> *_Nonnull channelId;
var channelId: NSNumber & SDLInt { get set }


Service Name
IP
Description
Enable
Enabled
Disabled
Validate and Submit
Home
About
Job Seekers
Contact Us
Email address
Twitter
@
Contact Us Today!
First Name
Last Name
E-Mail
Phone #
Address
City
State
Please select your state
Alabama
Alaska
Arizona
Arkansas
California
Colorado
Connecticut
Delaware
District of Columbia
Florida
Georgia
Hawaii
daho
Illinois
Indiana
Iowa
Kansas
Kentucky
Louisiana
Maine
Maryland
Mass
Michigan
Minnesota
Mississippi
Missouri
Montana
Nebraska
Nevada
New Hampshire
New Jersey
New Mexico
New York
North Carolina
North Dakota
Ohio
Oklahoma
Oregon
Pennsylvania
Rhode Island
South Carolina
South Dakota
Tennessee
Texas
Uttah
Vermont
Virginia
Washington
West Virginia
Wisconsin
Wyoming
Zip Code
Website or domain name
Do you have hosting?
Yes
No
Project Description
Success
Thanks for contacting us, we will get back to you shortly.
Send


Testing SSL
Testing an SSL client not only involves unit and integration testing, but also involves adversarial testing, which tests that an attacker cannot break or subvert a secure connection.
Unit Testing
Play comes with play.api.test.WsTestClient
, which provides two methods, wsCall
and wsUrl
. It can be helpful to use PlaySpecification
and in new WithApplication
"calls index" in new WithApplication() {
await(wsCall(routes.Application.index()).get())
}
wsUrl("https://example.com").get()
Integration Testing
If you want confirmation that your client is correctly configured, you can call out to HowsMySSL, which has an API to check JSSE settings.
import java.io.File
import akka.actor.ActorSystem
import akka.stream.ActorMaterializer
import play.api.libs.ws.ahc._
import play.api.{Mode, Environment}
import play.api.libs.json.JsSuccess
import play.api.libs.ws._
import play.api.test._
import com.typesafe.config.{ConfigFactory, ConfigValueFactory}
import scala.concurrent.duration._
import org.specs2.specification.AfterAll
class HowsMySSLSpec extends PlaySpecification with AfterAll {
val system = ActorSystem("howsMySSLSpec")
implicit val materializer = ActorMaterializer()(system)
def afterAll(): Unit = {
system.shutdown()
}
def createClient(rawConfig: play.api.Configuration): WSClient = {
val classLoader = Thread.currentThread().getContextClassLoader
val parser = new WSConfigParser(rawConfig, new Environment(new File("."), classLoader, Mode.Test))
val clientConfig = new AhcWSClientConfig(parser.parse())
// Debug flags only take effect in JSSE when DebugConfiguration().configure is called.
//import play.api.libs.ssl-config.debug.DebugConfiguration
//clientConfig.ssl.map {
// _.debug.map(new DebugConfiguration().configure)
//}
val builder = new AhcConfigBuilder(clientConfig)
val client = new AhcWSClient(builder.build())
client
}
def configToMap(configString: String): Map[String, _] = {
import scala.collection.JavaConverters._
ConfigFactory.parseString(configString).root().unwrapped().asScala.toMap
}
"WS" should {
"verify common behavior" in {
// GeoTrust SSL CA - G2 intermediate certificate not found in cert chain!
// See https://github.com/jmhodges/howsmyssl/issues/38 for details.
val geoTrustPem =
"""-----BEGIN CERTIFICATE-----
|MIIEWTCCA0GgAwIBAgIDAjpjMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYT
|AlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVz
|dCBHbG9iYWwgQ0EwHhcNMTIwODI3MjA0MDQwWhcNMjIwNTIwMjA0MDQwWjBE
|MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEdMBsGA1UE
|AxMUR2VvVHJ1c3QgU1NMIENBIC0gRzIwggEiMA0GCSqGSIb3DQEBAQUAA4IB
|DwAwggEKAoIBAQC5J/lP2Pa3FT+Pzc7WjRxr/X/aVCFOA9jK0HJSFbjJgltY
|eYT/JHJv8ml/vJbZmnrDPqnPUCITDoYZ2+hJ74vm1kfy/XNFCK6PrF62+J58
|9xD/kkNm7xzU7qFGiBGJSXl6Jc5LavDXHHYaKTzJ5P0ehdzgMWUFRxasCgdL
|LnBeawanazpsrwUSxLIRJdY+lynwg2xXHNil78zs/dYS8T/bQLSuDxjTxa9A
|kl0HXk7+Yhc3iemLdCai7bgK52wVWzWQct3YTSHUQCNcj+6AMRaraFX0DjtU
|6QRN8MxOgV7pb1JpTr6mFm1C9VH/4AtWPJhPc48Obxoj8cnI2d+87FLXAgMB
|AAGjggFUMIIBUDAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1luMrMTjAd
|BgNVHQ4EFgQUEUrQcznVW2kIXLo9v2SaqIscVbwwEgYDVR0TAQH/BAgwBgEB
|/wIBADAOBgNVHQ8BAf8EBAMCAQYwOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDov
|L2NybC5nZW90cnVzdC5jb20vY3Jscy9ndGdsb2JhbC5jcmwwNAYIKwYBBQUH
|AQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5nZW90cnVzdC5jb20w
|TAYDVR0gBEUwQzBBBgpghkgBhvhFAQc2MDMwMQYIKwYBBQUHAgEWJWh0dHA6
|Ly93d3cuZ2VvdHJ1c3QuY29tL3Jlc291cmNlcy9jcHMwKgYDVR0RBCMwIaQf
|MB0xGzAZBgNVBAMTElZlcmlTaWduTVBLSS0yLTI1NDANBgkqhkiG9w0BAQUF
|AAOCAQEAPOU9WhuiNyrjRs82lhg8e/GExVeGd0CdNfAS8HgY+yKk3phLeIHm
|TYbjkQ9C47ncoNb/qfixeZeZ0cNsQqWSlOBdDDMYJckrlVPg5akMfUf+f1Ex
|RF73Kh41opQy98nuwLbGmqzemSFqI6A4ZO6jxIhzMjtQzr+t03UepvTp+UJr
|YLLdRf1dVwjOLVDmEjIWE4rylKKbR6iGf9mY5ffldnRk2JG8hBYo2CVEMH6C
|2Kyx5MDkFWzbtiQnAioBEoW6MYhYR3TjuNJkpsMyWS4pS0XxW4lJLoKaxhgV
|RNAuZAEVaDj59vlmAwxVG52/AECu8EgnTOCAXi25KhV6vGb4NQ==
|-----END CERTIFICATE-----
""".stripMargin
val configString = """
|//ssl-config.debug=["certpath", "ssl", "trustmanager"]
|ssl-config.protocol="TLSv1"
|ssl-config.enabledProtocols=["TLSv1"]
|
|ssl-config.trustManager = {
| stores = [
| { type: "PEM", data = ${geotrust.pem} }
| ]
|}
""".stripMargin
val rawConfig = ConfigFactory.parseString(configString)
val configWithPem = rawConfig.withValue("geotrust.pem", ConfigValueFactory.fromAnyRef(geoTrustPem))
val configWithSystemProperties = ConfigFactory.load(configWithPem)
val playConfiguration = play.api.Configuration(configWithSystemProperties)
val client = createClient(playConfiguration)
val response = await(client.url("https://www.howsmyssl.com/a/check").get())(5.seconds)
response.status must be_==(200)
val jsonOutput = response.json
val result = (jsonOutput \ "tls_version").validate[String]
result must beLike {
case JsSuccess(value, path) =>
value must_== "TLS 1.0"
}
}
}
}
Note that if you are writing tests that involve custom configuration such as revocation checking or disabled algorithms, you may need to pass system properties into SBT:
javaOptions in Test ++= Seq("-Dcom.sun.security.enableCRLDP=true", "-Dcom.sun.net.ssl.checkRevocation=true", "-Djavax.net.debug=all")
Adversarial Testing
There are several points of where a connection can be attacked. Writing these tests is fairly easy, and running these adversarial tests against unsuspecting programmers can be extremely satisfying.
This should not be taken as a complete list, but as a guide. In situations where security is paramount, a review should be done by professional info-sec consultants.
Testing Certificate Verification
Write a test to connect to “https://example.com”. The server should present a certificate which says the subjectAltName is dnsName, but the certificate should be signed by a CA certificate which is not in the trust store. The client should reject it.
This is a very common failure. There are a number of proxies like mitmproxy or Fiddler which will only work if certificate verification is disabled or the proxy’s certificate is explicitly added to the trust store.
Testing Weak Cipher Suites
The server should send a cipher suite that includes NULL or ANON cipher suites in the handshake. If the client accepts it, it is sending unencrypted data.
For a more in depth test of a server’s cipher suites, see sslyze.
Testing Certificate Validation
To test for weak signatures, the server should send the client a certificate which has been signed with, for example, the MD2 digest algorithm. The client should reject it as being too weak.
To test for weak certificate, The server should send the client a certificate which contains a public key with a key size under 1024 bits. The client should reject it as being too weak.
For a more in depth test of certification validation, see tlspretense and frankencert.
Testing Hostname Verification
Write a test to “https://example.com”. If the server presents a certificate where the subjectAltName’s dnsName is not example.com, the connection should terminate.
For a more in depth test, see dnschef.


Roma Pass
ROMA-PASS (three-day) = 36 euro
ROMA-PASS 48 hours (two-day) = 28 euro
Roman tourist cards ROMA-ROMA-PASS and PASS 48 hours, under certain conditions, can help in the smooth exploring the Eternal City. You have the right to count all the planned entry fees and costs, in order to understand whether you will pay off.
Let's do a brief account of the three-day card:
three-day ticket for public transport (BTI) = 16.50 euro
admission to the Colosseum-Forum-Palatine = 12 euro
admission to the Castle of St. Angel = 10.50
-------------------
Total: 39 euro
Same as above, I have for 36 euros, buying a card ROMA-PASS (3 euros less)
However, if you live in the center of Rome and you will not use public transportation, this bill is simple ... ROMA-PASS does not pay you ...
Package card ROMA-PASS includes:
- Free admission to the first two visited national museums in Rome;
- Discounts for all subsequent state museums in Rome (for three days validity of the card);
- Free admission to some of the smaller museums: Museo della Repubblica Romana e della memoria garibaldine, Museo Bilotti in the Villa Borghese park, Museo Canonica, the Museo delle Mura Museo Napoleonico and Villa di Massenzio;
- Discounts on some exhibitions and performances in Rome;
- A three-day access to the means of transport ATAC (buses, trams, trolley buses, metro A and B metro lines underground terrestrial Roma-Pantano, Roma-Lido, Roma-Viterbo within the city of Rome).
Package card ROMA-PASS 48 hours includes:
- Free admission to the first state museum are visiting Rome;
- Discounts for all subsequent state museums in Rome (for three days validity of the card);
- Free admission to some of the smaller museums: Museo della Repubblica Romana e della memoria garibaldine, Museo Bilotti in the Villa Borghese park, Museo Canonica, the Museo delle Mura Museo Napoleonico and Villa di Massenzio;
- Discounts on some exhibitions and performances in Rome;
- A two-day access to the means of transport ATAC (buses, trams, trolley buses, metro A and B metro lines underground terrestrial Roma-Pantano, Roma-Lido, Roma-Viterbo within the city of Rome).
Warning! Both cards do not include the Trenitalia railway and bus ATRAL / Cotral - eg. You can not on the cards to travel by train line FR 1-2-3-4-5, you can not get from / to Fiumicino and Ciampino airports.
Together with the card tourist receives:
- The map of the center of Rome
- Tourist information on museums and current cultural events.
Unfortunately, the Vatican Museums and other non-state tourist facilities are excluded from the ROMA PASS card!
PURCHASE OF ROME CARD TRAVEL ROMA-PASS
Where it can buy? In museums and at the Tourist Information Points (PIT).
The most important PIT'y:
- PIT Fiumicino Aeroporto Leonardo Da Vinci - Arrivia Internazionali Terminal C (open: 9.00 - 18.30);
- PIT Termini station Termini - Via Giovanni Giolitti, 34 (open: 8.00 - 20.00).
The card is nominative (checks!) And important two or three calendar days including the day of first use (expires the second or third day at. 24.00).
Additional Information ->
http://www.romapass.it/
The Colosseum launched a special entrance gate reserved for cardholders Roma Pass (admission without a priority queue).


{%extends 'base.html'%} {%block content%} You Are Not Authenticated Please login or signup {%endblock content%}


Command Line Options
This section of the documentation details all the available command line options that can be used during the execution of the code review engine.
code.review.pkgname
-Dcode.review.pkgname=[PACKAGE NAME]
MANDATORY FOR SINGLE PACKAGE REVIEW
This option is mandatory when performing a single package review and must be provided, however, This can be excluded on a multi package review
This option provides the name of the package to be reviewed. This name MUST match the exact case as to how the package was created in designer, For Example:
-Dcode.review.pgkname=IotDemo
code.review.pkgprefix
-Dcode.review.pkgprefix=[PREFIX or COMMA SEPARATED LIST OF PREFIXES]
MANDTORY
This option is mandatory and must be provided
This option provides a prefix of the package, or a list of package prefixes where a multi-package review needs to include packages with different prefixes. For example:
-Dcode.review.pkgprefix=Iot
or for a multi-package review
-Dcode.review.pkgprefix=Iot,Sag,Wx
code.review.directory
-Dcode.review.directory=[LOCATION OF PACKAGES DIRECTORY]
MANDATORY
This option is mandatory and must be provided
This option provides the location of the packages directory. This is normally the location as to where the packages have been checked out of source control, but could also point to the integration server packages directory. For example:
-Dcode.review.directory=c:\softwareag\IntegrationServer\instances\default\packages
code.review.runmode
-Dcode.review.runmode=[MULTI]
This option is option and only required when you want to perform a multi-package review. In this scenario, you provide the command option as follows:
-Dcode.review.runmode=MULTI
Note
With a multi package review, the packagename option is not required, and a comma separated list of prefixes can be passed to the pkgprefix option
code.review.options
-Dcode.review.options=[PATH TO OVERRIDE CONFIGURATION XML]
This option allows you to provide a subset configuration xml to override the default behaviour and rules. This allows you to create you own rulesets, exclusions, etc, without changing the base configuration file.
Note
This is a recommeneded approach as this allows for easier upgrades, and gives you the ability to quickly take advantage of new checks and rules on subsequent versions of the product
Example usage of this options is as follows:
-Dcode.review.options=c:\SoftwareAG\tools\ISCCR\myRules.xml
Additional JVM Options
Note
Any other JVM option can be provided as required. You can parameterise the configuraton using environment variables, and these can be passed as a -D option. In addition, on rare occassions, you may need to modify the JVM memory options with a -X parameter if a flow service is particulalry large (which should be refactored regardless in that scenario!)


Fortnite: Chapter 2 – Dance at the Pipeman, the Hayman and the Timber Tent
by Lauren AitkenFor this Fortnite challenge, you’ll need to visit and dance at three points of interest around the map.
You can complete this challenge across three matches or in one if you’re fast enough. Once you’ve found the Pipeman, Hayman and timber tent, do a little dance at them for a few moments until the step registers as complete.
Keep an eye out for opponents in these locations, so grab a weapon and build a few walls around you before you get started.
Dance at the Pipeman, the Hayman and the Timber Tent
To find the pipeman, you’ll need to head South of Misty Meadows. You’ll find him chilling on a hill, so use your favourite emote for a few seconds before moving on.
Next, it’s off to Frenzy Farm to find the Hayman. He’s in the Southwest of the area giving you a big wave. Again, dance in front of him for a moment before setting off to find the timber tent.
The timber tent can be found Northeast of Holly Hedges and looks like a teepee without any cover on it. There’s a chest inside it, so open it up to grab a weapon then do a wee dance to finish off the challenge.
Where to find the Fortnite letters
- Where to find the letter F
- Where to find the letter O
- Where to find the letter R
- Where to find the letter T
You can also check out our other Fortnite Chapter 2 guides such as where to find E.G.O. Outposts, how to upgrade your equipment and where to find the boat launch, coral cave and flopper pond.
Games featured in this article


UHF A film review by Ken Kaufman Copyright 1989 Ken Kaufman
What can you say about a film which includes the theme to Mr. Ed?
Shall we start with the bad news? The plot is cliched and holey; the bad guys might as well be made of cardboard, and after the opening scene, the next 20-30 minutes fall dreadfully flat.
But, in spite of all that, I would rate Weird Al Yankovic's new film, UHF, a 7 on the ISIYVAHIT (Infamous-Send-In-Your-Vote-And-Have-It-Tabulated) 1-10 scale. Why?
Weird Al's strength is in the art of parody. And the film is full of satire that hits right on the mark; this turns the entire movie around. Blockbuster movies, television shows, music videos, and of course some classic commercials are targeted and nailed.
Also included in the film are some of the world's oldest gags. But in a (perhaps inadvertent) fit of brilliance, UHF does a better job of telegraphing them than Western Union could ever hope to, and in doing so, allows one to revel for eons before the punch line is finally delivered. Who cares if you can guess what's in the closet? It's still funny when they open the door.
A couple things to watch for that I didn't catch until they were mentioned in the closing credits: A clip from that other classic, "Mars Needs Women," and a cameo appearance by Dr. Demento (listed in credits as "Man eating whipped cream."
No one is going to hand Yankovic an Oscar for his effort; this is hardly great cinema. However, if you go in looking for low-level laughs and some wonderful satire on all sorts of modern pop-culture targets, you will have more fun than you can wave a spatula at.
Ken Kaufman<EMAIL_ADDRESS>.
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


+------------------------------------------------------------------------ | | DISK-DRIVE 1541: ROM-LISTING | +------------------------------------------------------------------------ | | ROM-Comments were done by Frank Kontros, used with permission. | | | File Manager Routines: | | $C100/49408 Turn LED on for current drive | $C118/49432 Turn LED on | $C123/49443 Clear error flags | $C12C/49452 Prepare for LED flash after error | $C146/49478 Interpret command from computer | $C194/49556 Prepare error msg after executing command | $C1BD/49597 Erase input buffer | $C1C8/49608 Output error msg (track and sector 0) | $C1D1/49617 Check input line | $C1E5/49637 Check ':' on input line | $C1EE/49646 Check input line | $C268/49768 Search character in input buffer | $C2B3/49843 Check line length | $C2DC/49884 Clear flags for command input | $C312/49938 Preserve drive number | $C33C/49980 Search for drive number | $C368/50024 Get drive number | $C38F/50063 Reverse drive number | $C398/50072 Check given file type | $C3BD/50109 Check given drive number | $C3CA/50122 Verify drive number | $C440/50240 Flags for drive check | $C44F/50255 Search for file in directory | $C48B/50315 ? | $C4D8/50392 ? | $C5AC/50604 ? | $C63D/50749 Test and initalise drive | $C66E/50798 Name of file in directory buffer | $C688/50824 Copy filename to work buffer | $C6A6/50854 Search for end of name in command | $C6CE/50894 ? | $C6DE/50910 ? | $C7AC/51116 Clear Directory Output Buffer | $C7B7/51127 Create header with disk name | $C806/51206 Print 'blocks free.' | $C817/51223 'Blocks free.' | $C823/51235 Perform [S] - Scratch command | $C87D/51325 Erase file | $C8B6/51382 Erase dir entry | $C8C1/51393 Perform [D] - Backup command (Unused) | $C8C6/51398 Format disk | $C8F0/51440 Perform [C] - Copy command | $C9A1/51617 ? | $C9A7/51623 ? | $C9D5/51669 ? | $C9FA/51706 ? | $CA35/51765 ? | $CA88/51848 Perform [R] - Rename command | $CACC/51916 Check if file present | $CAF8/51960 Perform [M] - Memory command | $CB20/52000 M-R memory read | $CB50/52048 M-W memory write | $CB5C/52060 Perform [U] - User command | $CB84/52100 Open direct access channel, number | $CC1B/52251 Perform [B] - Block/Buffer command | $CC5D/52317 Block commands "AFRWEP" | $CC63/52323 Block command vectors | $CC6F/52335 Get parameters form block commands | $CCF2/52466 Decimal values 1, 10, 100 | $CCF5/52469 B-F block free | $CCFE/52478 ? | $CD03/52483 B-A block allocate | $CD36/52534 Read block to buffer | $CD3C/52540 Get byte from buffer | $CD42/52546 Read block from disk | $CD56/52566 B-R block read | $CD5F/52575 U1, Block read without changing buffer pointer | $CD73/52595 B-W block write | $CD97/52631 U2, Block write without changing buffer pointer | $CDA3/52643 B-E block execute | $CDBD/52669 B-P block pointer | $CDD2/52690 Open channel | $CDF2/52722 Check buffer number and open channel | $CE0E/52750 Set pointer for REL file | $CE2C/52780 ? | $CE6E/52846 Divide by 254 | $CE71/52849 Divide by 120 | $CED9/52953 Erase work storage | $CEE2/52962 Left shift 3-byte register twice | $CEE5/52965 Left shift 3-byte register once | $CEED/52973 Add 3-byte registers | $CEFA/52986 ? | $CF09/53001 ? | $CF1E/53022 ? | $CF8C/53132 Change buffer | $CF9B/53147 Write data in buffer | $CFF1/53233 Write data byte in buffer | $D005/53253 Perform [I] - Initalise command | $D00E/53262 Read BAM from disk | $D042/53314 Load BAM | $D075/53365 Calculate blocks free | $D09B/53403 ? | $D0AF/53423 ? | $D0C3/53443 Read block | $D0C7/53447 Write block | $D0EB/53483 Open channel for reading | $D107/53511 Open channel for writing | $D125/53541 Check for file type REL | $D12F/53551 Get buffer and channel numbers | $D137/53559 Get a byte from buffer | $D156/53590 Get byte and read next block | $D19D/53661 Write byte in buffer and block | $D1C6/53702 Increment buffer pointer | $D1D3/53715 Get drive number | $D1DF/53727 Find write channel and buffer | $D1E2/53730 Find read channel and buffer | $D227/53799 Close channel | $D25A/53850 Free buffer | $D28E/53902 Find buffer | $D2BA/53946 ? | $D2DA/53978 ? | $D307/54023 Close all channels | $D313/54035 Close all channels of other drives | $D339/54073 ? | $D37F/54143 Find channel and allocate | $D39B/54171 Get byte for output | $D44D/54349 Read next block | $D460/54368 Read block | $D464/54372 Write block | $D475/54389 Allocate buffer and read block | $D486/54406 Allocate new block | $D48D/54413 Write dir block | $D4C8/54472 Set buffer pointer | $D4DA/54490 Close internal channel | $D4E8/54504 Set buffer pointer | $D4F6/54518 Get byte from buffer | $D506/54534 Check track and sector numbers | $D552/54610 Get track and sector numbers for current job | $D55F/54623 Check for vaild track and sector numbers | $D572/54642 DOS mismatch error | $D586/54662 Read block | $D58A/54666 Write block | $D599/54681 Verify execution | $D5C6/54726 Additional attempts for read errors | $D676/54902 Move head by half a track | $D693/54931 Move head one track in or out | $D6A6/54950 Attempt command execution multiple times | $D6D0/54992 Transmit param to disk controller | $D6E4/55012 Enter file in dir | $D7B4/55220 OPEN command, secondary addr 15 | $D7C7/55239 -Check '*' Last file | $D7F3/55283 -Check '$' Directory | $D815/55317 -Check '#' Channel | $D8F5/55541 Open a file with overwriting (@) | $D940/55616 ? | $D9A0/55712 Open file for reading | $D9E3/55779 Open file for writing | $DA09/55817 Check file type and control mode | $DA2A/55850 Preparation for append | $DA55/55893 Open directory | $DAC0/56000 Close routine | $DB02/56066 Close file | $DB62/56162 Write last block | $DBA5/56229 Directory entry | $DC46/56390 Read block, allocate buffer | $DCB6/56502 Reset pointer | $DCDA/56538 Construct a new block | $DD8D/56717 Write byte in side-sector block | $DD95/56725 Manipulate flags | $DDA6/56742 ? | $DDAB/56747 Verify command code for writing | $DDB7/56759 ? | $DDF1/56817 Write a block of a REL file | $DDFD/56829 Write bytes for following track | $DE0C/56844 Get following track and sector numbers | $DE19/56857 Following track for last block | $DE2B/56875 buffer pointer to zero | $DE3B/56891 Get track and sector | $DE50/56912 Write | $DE57/56919 Read | $DE5E/56926 Write | $DE65/56933 Read | $DE6C/56940 Write | $DE73/56947 Read | $DE95/56981 Get following track and sector from buffer | $DEA5/56997 Copy buffer contents | $DEC1/57025 Erase buffer Y | $DED2/57042 Get side-sector number | $DEDC/57052 Set buffer pointer to side-sector | $DEE9/57065 Buffer pointer for side-sector | $DEF8/57080 Get side sector and buffer pointer | $DF1B/57115 Read side-sector | $DF21/57121 Write side-sector | $DF45/57157 Set buffer pointer in side-sector | $DF4C/57164 Calculate number of blocks in a REL file | $DF66/57190 Verify side-sector in buffer | $DF93/57235 Get buffer number | $DF9E/57246 ? | $DFB7/57271 ? | $DFC2/57282 ? | $DFD0/57296 Get next record iin REL file | $E03C/57404 Write block and read next block | $E07C/57468 Write a byte in a record | $E0AB/57515 Write byte in REL file | $E0F3/57587 Fill record with 0s | $E105/57605 Write buffer number in table | $E120/57632 Get byte from REL file | $E1CB/57803 Get last side-sector | $E207/57863 Perform [P] - Position command | $E2E2/58082 Divide data blocks into records | $E304/58116 Set pointer to next record | $E31C/58140 Expand side-sector | $E44E/58446 Write side-sector and allocate new | $E4FC/58620 Table of Error Messages: 00, Ok | $E500/58624 Error Message: 20,21,22,23,24,27, Read error | $E50B/58635 Error Message: 52, File too large | $E517/58647 Error Message: 50, Record not present | $E522/58658 Error Message: 51, Overflow in record | $E52F/58671 Error Message: 25,28, Write error | $E533/58675 Error Message: 26, Write protect on | $E540/58688 Error Message: 29, Disk id mismatch | $E546/58694 Error Message: 30,31,32,33,34, Syntax error | $E552/58706 Error Message: 60, Write file open | $E556/58710 Error Message: 63, File exists | $E55F/58719 Error Message: 64, File type mismatch | $E567/58727 Error Message: 65, No block | $E570/58736 Error Message: 66,67, Illegal track or sector | $E589/58761 Error Message: 61, File not open | $E58D/58765 Error Message: 39,62, File not found | $E592/58770 Error Message: 01, Files scratched | $E59F/58783 Error Message: 70, No channel | $E5AA/58794 Error Message: 71, Dir error | $E5AF/58799 Error Message: 72, Disk full | $E5B6/58806 Error Message: 73, Cbm dos v2.6 1541 | $E5C8/58824 Error Message: 74, Drive not ready | $E5D5/58837 Indexed words: 09 Error | $E5DB/58843 Indexed words: 0A Write | $E5E1/58849 Indexed words: 03 File | $E5E6/58854 Indexed words: 04 Open | $E5EB/58859 Indexed words: 05 Mismatch | $E5F4/58868 Indexed words: 06 Not | $E5F8/58872 Indexed words: 07 Found | $E5FE/58878 Indexed words: 08 Disk | $E603/58883 Indexed words: 0B Record | $E60A/58890 Prepare error number and message | $E645/58949 Print error message into error buffer | $E680/59008 TALK | $E688/59016 LISTEN | $E69B/59035 Convert BIN to 2-Ascii (error message buffer) | $E6AB/59051 Convert BCD to 2-Ascii (error message buffer) | $E6BC/59068 Write OK in buffer | $E6C1/59073 Print error on track 00,00 to error buffer | $E6C7/59079 Print error on current track to error buffer | $E706/59142 Write error message string to buffer | $E754/59220 Get character and in buffer | $E767/59239 Get a char of the error message | $E775/59253 Increment pointer | $E77F/59263 Dummy subroutine | $E780/59264 Check for auto start - removed | $E7A3/59299 Perform [&] - USR file execute command | $E84B/59467 Generate checksum | $E853/59475 IRQ routine for serial bus | $E85B/59483 Service the serial bus | $E909/59657 Send data | $E99C/59804 DATA OUT lo | $E9A5/59813 DATA OUT hi | $E9AE/59822 CLOCK OUT hi | $E9B7/59831 CLOCK OUT lo | $E9C0/59840 Read IEEE port | $E9C9/59849 Get data byte from bus | $E9F2/59890 Accept byte with EOI | $EA2E/59950 Accept data from serial bus | $EA59/59993 Test for ATN | $EA6E/60014 Flash LED for hardware defects, self-test | $EAA0/60064 Power-up RESET routine | $EBFF/60415 Wait loop | $EC9E/60574 Load dir | $ED23/60707 ? | $ED59/60761 Transmit dir line | $ED67/60775 Get byte from buffer | $ED84/60804 Perform [V] - Validate command | $EDB3/60851 ? | $EDE5/60901 Allocate file blocks in BAM | $EE0D/60941 Perform [N] - New (Format) command | $EEB7/61111 Create BAM | $EEF4/61172 Write BAM if needed | $EF3A/61242 Set buffer pointer for BAM | $EF4D/61261 Get number of free blocks for dir | $EF5C/61276 Mark block as free | $EF88/61320 Set flag for BAM changed | $EF90/61328 Mark block as allocated | $EFCF/61391 Erase bit for sector in BAM entry | $EFE9/61417 Powers of 2 | $EFF1/61425 Write BAM after change | $F005/61445 Erase BAM buffer | $F011/61457 ? | $F05B/61531 ? | $F0D1/61649 ? | $F0DF/61663 ? | $F10F/61711 Get buffer number for BAM | $F119/61721 Buffer number for BAM | $F11E/61726 Find and allocate free block | $F1A9/61865 Find free sector and allocate | $F1FA/61946 Find free sectors in current track | $F220/61984 Verify number of free blocks in BAM | $F24B/62027 Establish number of sectors per track | $F258/62040 Dummy subroutine | | Disk Controller Routines: | | $F259/62041 Initialise disk controller | $F2B0/62128 IRQ routine for disk controller | $F2F9/62201 Head transport | $F36E/62318 Execute program in buffer | $F37C/62332 Bump, find track 1 (head at stop) | $F393/62355 Initialise pointer in buffer | $F3B1/62385 Read block header, verify ID | $F410/62480 Preserve block header | $F418/62488 Work Return value 01 (OK) into queue | $F41B/62491 Work Return value 0B (READ ERROR) into queue | $F41E/62494 Work Return value 09 (READ ERROR) into queue | $F423/62499 Job optimisation | $F4CA/62666 Test command code further | $F4D1/62673 Read sector | $F50A/62730 Find start of data block | $F510/62736 Read block header | $F556/62806 Wait for SYNC | $F56E/62830 Test command code further | $F575/62837 Write data block to disk | $F5E9/62953 Calculate parity for data buffer | $F5F2/62962 Convert buffer of GCR data into binary | $F691/63121 Test command code further | $F698/63128 Compare written data with data on disk | $F6CA/63178 Command code for find sector | $F6D0/63184 Convert 4 binary bytes to 5 GCR bytes | $F77F/63359 GCR (5-bit) nybble table | $F78F/63375 Convert 260 bytes to 325 bytes group code | $F7E6/63462 Convert 5 GCR bytes to 4 binary bytes | $F8A0/63648 Conversion table GCR to binary - high nybble | $F8C0/63680 Conversion table GCR to binary - low nybble | $F8E0/63712 Decode 69 GCR bytes | $F934/63796 Convert block header to GCR code | $F969/63849 Error entry disk controller | $F97E/63870 Turn drive motor on | $F98F/63887 Turn drive motor off | $F99C/63900 Job loop disk controller | $F9CB/63947 ? | $F9D9/63961 ? | $FA05/64005 Move head to next track | $FA1C/64028 Calculate number of head steps | $FA3B/64059 Move stepper motor short distance | $FA4E/64078 Load head | $FA63/64099 ? | $FA7B/64123 Prepare fast head movement | $FA97/64151 Fast head movement | $FAA5/64165 Prepare slow head movement | $FAC7/64199 Formatting | $FDA3/64931 Write SYNC 10240 times, erase track | $FDC3/64963 Read/write ($621/$622) times | $FDD3/64979 Attempt counter for formatting | $FDE5/64997 ? | $FDF5/65013 Copy data from overflow buffer | $FE00/65024 Switch to reading | $FE0E/65038 Write $55 10240 times | $FE30/65072 Convert header in buffer 0 to GCR code | $FE67/65127 Interrupt routine | $FE85/65157 Constant: Directory track | $FE86/65158 Constant: Start of BAM | $FE87/65159 Constant: Length of BAM per track | $FE88/65160 Constant: End of BAM | $FE89/65161 Table of command words | $FE95/65173 Low byte of command addresses | $FEA1/65185 High byte of command addresses | $FEAD/65197 Bytes for syntax check | $FEB2/65202 File control methods "RWAM" | $FEB6/65206 File types "DSPUL" | $FEBB/65211 Names of file types: 1st letter "DSPUR" | $FEC0/65216 Names of file types: 2nd letter "EERSE" | $FEC5/65221 Names of file types: 3rd letter "LQGRL" | $FECA/65226 Error LED bit value | $FECD/65229 Masks for bit command | $FED1/65233 Number of sectors per track | $FED5/65237 'A' marker for 1541 format | $FED6/65238 4 track ranges | $FED7/65239 Number of tracks | $FED8/65240 Tracks on which sector numbers change | $FEDB/65243 Control bytes for head postion | $FEE0/65248 Buffer address high bytes | $FEE6/65254 ROM checksum | $FEE7/65255 From UI command $EB22, to reset (Without RAM/ROM test) | $FEEA/65258 Patch for diagnostic routine from $EA7A | $FEF3/65267 Delay loop for serial bus in 1541 mode, from $E97D | $FEFB/65275 Patch for data output to serial bus, from $E980 | $FF01/65281 U9 vector, switch 1540/1541 | $FF10/65296 Patch for reset routine, from $EAA4 | $FF20/65312 Patch for listen to serial bus, from $E9DC | $FF2F/65327 Unused | $FFE6/65510 Format [C8C6] | $FFE8/65512 Turn motor off [F98F] | $FFEA/65514 USER vectors: UA, U1 [CD5F] | $FFEC/65516 USER vectors: UB, U2 [CD97] | $FFEE/65518 USER vectors: UC, U3 [0500] | $FFF0/65520 USER vectors: UD, U4 [0503] | $FFF2/65522 USER vectors: UE, U5 [0506] | $FFF4/65524 USER vectors: UF, U6 [0509] | $FFF6/65526 USER vectors: UG, U7 [050C] | $FFF8/65528 USER vectors: UH, U8 [050F] | $FFFA/65530 USER vectors: UI, U9 [FF01] | $FFFC/65532 Hardware vectors: RESET [EAA0] | $FFFE/65534 Hardware vectors: IRQ [FE67] | +------------------------------------------------------------------------


--- layout: default title: Program13 ---
More Whatsit?Pages Coming Soon
subscribe via RSS
We have not added any whatsit?pages yet... :( We will be adding some for you soon!


[gecode-users] Hint: FloatVars update
Filip Konvička
filip.konvicka at logis.cz
Thu Aug 28 11:21:41 CEST 2008
Thanks to Stefano Gualandi, here's an update of the README.txt paragraph
about building Gecode 2.1.1 for FloatVars:
To use it, download Gecode 2.1.1 source package, apply the patch
./patch/float.patch, put ./patch/float.vis to Gecode source root
(where 'variables.vsl' resides) and build Gecode.
(I somehow failed to include instructions about where to put float.vis)
Cheers,
Filip
More information about the gecode-users
mailing list


E
- Object type that is to be inserted into the Bloom filter, e.g. String or Integer.public class BloomFilter<E>
extends java.lang.Object
implements java.io.Serializable
| Constructor and Description |
|---|
BloomFilter(int bitSetSize,
int expectedNumberOfFilterElements)
Constructs an empty Bloom filter.
|
| Modifier and Type | Method and Description |
|---|---|
void |
add(E element)
Adds an object to the Bloom filter.
|
void |
addAll(java.util.Collection<? extends E> c)
Adds all elements from a Collection to the Bloom filter.
|
void |
clear()
Sets all bits to false in the Bloom filter.
|
boolean |
contains(E element)
Returns true if the element could have been inserted into the Bloom filter.
|
boolean |
containsAll(java.util.Collection<? extends E> c)
Returns true if all the elements of a Collection could have been inserted
into the Bloom filter.
|
int |
count()
Returns the number of elements added to the Bloom filter after it
was constructed or after clear() was called.
|
static long |
createHash(byte[] data)
Generates a digest based on the contents of an array of bytes.
|
static long |
createHash(java.lang.String val)
Generates a digest based on the contents of a String.
|
static long |
createHash(java.lang.String val,
java.lang.String charset)
Generates a digest based on the contents of a String.
|
boolean |
equals(java.lang.Object obj)
Compares the contents of two instances to see if they are equal.
|
double |
expectedFalsePositiveProbability()
Calculates the expected probability of false positives based on
the number of expected filter elements and the size of the Bloom filter.
|
boolean |
getBit(int bit)
Read a single bit from the Bloom filter.
|
double |
getFalsePositiveProbability()
Get the current probability of a false positive.
|
double |
getFalsePositiveProbability(double numberOfElements)
Calculate the probability of a false positive given the specified
number of inserted elements.
|
int |
getK()
Returns the value chosen for K.
K is the optimal number of hash functions based on the size of the Bloom filter and the expected number of inserted elements. |
int |
hashCode()
Calculates a hash code for this class.
|
void |
setBit(int bit,
boolean value)
Set a single bit in the Bloom filter.
|
int |
size()
Returns the number of bits in the Bloom filter.
|
public BloomFilter(int bitSetSize, int expectedNumberOfFilterElements)
bitSetSize
- defines how many bits should be used for the filter.expectedNumberOfFilterElements
- defines the maximum number of elements the filter is expected to contain.public static long createHash(java.lang.String val, java.lang.String charset) throws java.io.UnsupportedEncodingException
val
- specifies the input data.charset
- specifies the encoding of the input data.java.io.UnsupportedEncodingException
- if the charset is unsupported.public static long createHash(java.lang.String val) throws java.io.UnsupportedEncodingException
val
- specifies the input data. The encoding is expected to be UTF-8.java.io.UnsupportedEncodingException
- if UTF-8 is not supported.public static long createHash(byte[] data)
data
- specifies input data.public boolean equals(java.lang.Object obj)
equals
in class java.lang.Object
obj
- is the object to compare to.public int hashCode()
hashCode
in class java.lang.Object
public double expectedFalsePositiveProbability()
public double getFalsePositiveProbability(double numberOfElements)
numberOfElements
- number of inserted elements.public double getFalsePositiveProbability()
public int getK()
public void clear()
public void add(E element) throws java.io.UnsupportedEncodingException
element
- is an element to register in the Bloom filter.java.io.UnsupportedEncodingException
- if UTF-8 is unsupported.public void addAll(java.util.Collection<? extends E> c) throws java.io.UnsupportedEncodingException
c
- Collection of elements.java.io.UnsupportedEncodingException
- if UTF-8 is unsupported.public boolean contains(E element) throws java.io.UnsupportedEncodingException
element
- element to check.java.io.UnsupportedEncodingException
- if UTF-8 is unsupported.public boolean containsAll(java.util.Collection<? extends E> c) throws java.io.UnsupportedEncodingException
c
- elements to check.java.io.UnsupportedEncodingException
- if UTF-8 is unsupported.public boolean getBit(int bit)
bit
- the bit to read.public void setBit(int bit, boolean value)
bit
- is the bit to set.value
- If true, the bit is set. If false, the bit is cleared.public int size()
public int count()