{ From user Lonnie, Model Consecutive_sign_cha at 16-May-2016 4:07:17 PM, encoding="UTF-8" } SoftwareVersion 4.7.0 { System Variables with non-default values: } SampleSize := 1000 TypeChecking := 1 Checking := 1 SaveOptions := 2 SaveValues := 0 NodeInfo FormNode: 1,0,0,1,0,0,0,,0,0,,0,0 Model Consecutive_sign_cha Title: Consecutive sign changes Description: Analytica challenge.~ ================~ ~ Write an expression that computes how many consecutive sign changes there have been at each cell along I. The sign of a number is -1 if the number is negative, 0 if it is 0, and 1 if it is positive.~ ~ For example, given: [1, 2, -2, 2, 0, 1, 3, -1]~ The signs are: [1, 1, -1, 1, 0, 1, 1, -1]~ And the number of consecutive sign changes are: [ 0, 0, 1, 2, 3, 4, 0, 1 ]~ Author: Lonnie Chrisman~ Lumina Decision Systems Date: Mon, May 16, 2016 3:51 PM SaveAuthor: Lonnie SaveDate: Mon, May 16, 2016 4:07 PM DiagState: 2,1,0,960,585,17 WindState: 2,656,53,809,464 FontStyle: Arial,15 FileInfo: 0,Model Consecutive_sign_cha,2,2,0,0,C:\Users\Lonnie\Documents\Analytica\Mastering Array Abstraction\Consecutive sign changes.ana Variable x Title: x Description: The data to be used, which of varying signs (-1, 0 or 1). Definition: Table(I)(-2,0,-1,1,-1,2,0,0,0,1,2,0,0,2,1,-2,-1,1,-2,-1,0,1,-2,0,-2,-1,2,2,-2,-2,0,2,-1,1,1,2,-1,0,2,-1,1,2,2,1,-2,-1,0,0,0,1,0,-1,2,-1,2,2,2,-1,2,-1,-1,0,-2,-1,1,-2,0,-1,2,1,2,2,1,-1,1,-2,0,1,2,-2,0,2,1,0,0,-1,-1,-2,-2,-1,-2,-1,-1,-2,1,1,1,-1,-1,0,0,1,-1,1,1,0,2,1,1,1,1,1,2,-2,-1,0,-2,1,-1,1,0,-2,-2,1,2,-1,0,2,0,-2,-1,0,1,-2,-1,-1,1,2,2,1,-1,0,1,1,-1,-1,1,2,1,1,0,0,2,2,0,-2,0,-2,-2,0,1,-2,2,1,0,2,2,2,-1,2,0,-2,-1,2,1,0,-1,-2,2,0,-2,-2,-1,2,2,0,-2,0,0,-1,-2,-1,-1,2,1,-1,2,-2,-1,1,1,-1,1,2,0,-1,1,-1,-1,-1,1,2,1,-1,2,-2,0,-1,2,1,-2,2,0,1,0,-2,0,-1,0,0,-1,2,-2,-1,2,1,-1,0,1,1,-1,2,-2,0,1,1,2,0,1,-2,1,-1,1,-1,2,-2,1,-1,0,2,0,-1,0,2,1,-1,1,-2,1,-1,-2,0,-1,-2,1,0,-2,-1,-2,-2,-1,-2,-1,1,2,-2,-2,2,-1,-1,1,1,-1,0,1,2,1,1,-2,-1,-2,-1,-1,1,0,-1,2,1,0,-2,-1,1,1,2,-2,1,-2,-1,-2,1,2,-2,1,1,-1,1,-1,2,-1,-1,0,0,1,-2,-1,-1,0,0,2,-2,0,-1,-1,2,2,0,2,-2,2,1,-1,-2,0,-1,2,-2,0,1,-2,-2,0,-1,1,2,1,0,2,-2,0,0,2,2,0,-1,-1,1,2,2,-1,1,1,-1,2,2,0,1,0,1,-2,1,1,1,1,1,-1,2,-1,-1,0,0,-2,0,1,-1,-2,0,-2,0,2,2,0,2,-2,-2,2,2,-1,1,0,-1,1,0,2,1,-1,-1,1,0,-2,-2,1,2,0,-2,1,-2,-2,-2,-2,-2,-2,2,1,-1,2,0,1,-1,0,-2,2,0,-1,2,1,0,-1,0,-1,2,-1,1,2,-1,-1,-2,0,-1,1,-1,-1,-1,0,0,1,-2,2,1,-1,1,-2,-2,-1,0,2,-2,0,-2,-1,0,1,-2,2,2,0,1,-2,1,0,-2,-2,-1,0,2,1,0,-2,1,2,0,-1,1,1,2,2,-1,-2,-2,2,1,1,0,0,2,0,-1,-2,0,-1,1,-1,-1,-2,0,0,0,2,2,0,-1,1,1,-2,-1,2,1,0,-1,1,0,2,-2,0,1,2,2,-1,-2,2,1,2,1,1,2,-1,1,2,0,0,-1,-1,-1,2,-2,1,-2,1,2,-1,0,0,1,0,-1,0,0,1,0,-1,0,1,-1,1,1,-2,1,2,-1,0,-1,2,1,2,-2,-1,2,-1,-1,-2,-1,2,-2,0,1,2,2,-1,2,2,-2,0,1,-1,0,0,1,0,0,2,0,1,2,-1,0,1,1,2,-1,0,-2,-2,2,-2,2,2,0,-2,-1,-2,2,2,2,2,-2,-1,2,1,-2,-1,0,0,-2,-1,1,2,0,-2,-1,-2,-2,2,-2,-2,0,0,2,0,0,0,1,1,2,0,-1,-2,0,2,-1,-1,-1,-2,0,0,-2,0,-2,1,-2,0,-1,0,2,0,-1,-2,0,-2,-2,-2,2,0,0,2,0,2,0,-2,1,0,1,-2,-1,0,-2,2,-1,1,1,2,0,0,2,-2,-2,1,-1,2,-1,1,-2,0,-1,1,-1,-1,-1,-2,2,1,-2,-1,-1,-2,-1,2,2,1,1,1,-2,-1,0,0,2,-1,-1,0,2,2,-2,0,-2,-2,2,0,2,1,-1,1,2,-2,-1,-1,2,1,-2,2,1,1,1,-2,-1,0,-1,2,2,0,-2,2,2,0,2,-2,-2,-1,1,1,0,-1,2,2,0,2,1,1,-1,1,0,-2,1,-2,0,0,-2,-1,2,2,-2,-1,2,0,0,-1,0,1,-1,-2,-2,-1,2,-2,2,0,0,0,-2,-1,0,-1,-1,-1,2,-1,0,-1,0,1,2,-1,0,-2,1,-1,1,2,0,0,0,-2,-2,0,-1,-1,0,1,0,0,-1,0,-1,2,2,1,-1,2,-2,-1,0,-2,0,1,1,0,-1,0,-2,1,-1,-1,1,1,1,2,-2,1,0,-1,1,-1,-1,-2,-1,1,1,1,1,-2,-1,-1,1,-2,-2,0,-1,1,1,0,-2,0,2,1,1,-2,-2,1,1,-1,1,0,-1,-2,2,-2,0,-1,-2,1,-1,2,1,0,-2,0,-1,-1,1,1,0,-2,0,-1,2,0,0,-2,0,2,1,2,2,0,-2,1,1,-2,2,-2,-2,-1,0,-1,-2,-1,2,-2,1,-1,2,0,0,-2,1,-2,-2,-1,0,1,-1,1,-1) NodeLocation: 200,136,1 NodeSize: 48,24 ValueState: 2,1128,16,416,762,,MIDM DisplayOutputs: Variable Number_of_consecutiv Index I Title: I Definition: 1..1000 NodeLocation: 96,128,1 NodeSize: 48,24 {!40000|Att_PrevIndexValue: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,527,528,529,530,531,532,533,534,535,536,537,538,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,555,556,557,558,559,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611,612,613,614,615,616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666,667,668,669,670,671,672,673,674,675,676,677,678,679,680,681,682,683,684,685,686,687,688,689,690,691,692,693,694,695,696,697,698,699,700,701,702,703,704,705,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,721,722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,750,751,752,753,754,755,756,757,758,759,760,761,762,763,764,765,766,767,768,769,770,771,772,773,774,775,776,777,778,779,780,781,782,783,784,785,786,787,788,789,790,791,792,793,794,795,796,797,798,799,800,801,802,803,804,805,806,807,808,809,810,811,812,813,814,815,816,817,818,819,820,821,822,823,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999,1000]} Variable Number_of_consecutiv Title: Number of consecutive sign changes numbers Description: Fill in this Definition with an expression that computes the number of consecutive sign changes. The sign of a number is either -1, 0 or 1 depending of whether the number is negative, zero or positive. If the sign in the same as the previous cell along I, then the number of consecutive sign changes is 0. If the sign has changed, then it is 1 more than the value for the previous cell. NodeLocation: 384,136,1 NodeSize: 56,56 WindState: 2,732,442,720,350 ValueState: 2,631,8,490,530,,MIDM DisplayInputs: Variable x Variable Answer___Number_of_c Title: Answer: ~ Number of consecutive sign changes numbers Description: There are many other solutions possible. This is probably the most efficient one. Definition: Cumulate(1, I, reset:sign(x) = sign(x[@I=@I-1])) - 1 NodeLocation: 200,424,1 NodeSize: 64,56 ValueState: 2,631,8,490,530,,MIDM Text Te1463439453 Description: Fill in the definition of this node: NodeLocation: 384,136,-1 NodeSize: 112,88 NodeInfo: 1,0,0,1,1,1,0,,0,,0 Text Te1463439486 Description: Don't peek at this definition until you've attempted it yourself. You can look at the result to understand what you should compute. NodeLocation: 192,392,-1 NodeSize: 152,104 NodeInfo: 1,0,0,1,1,1,0,,0,,0 Button View_description_of_ Title: View description of task NodeLocation: 560,84,1 NodeSize: 48,36 OnClick: ShowWindow(Consecutive_sign_cha,"Object") Close Consecutive_sign_cha