How to write a program to output multiple results
|
10-25-2020, 03:52 AM
Post: #1
|
|||
|
|||
How to write a program to output multiple results
As we all know, when you write a program, you can use the return statement to return the result you want.But is there a way to return multiple results to a CAS or HOME interface (not a terminal)?For example, I write an output program that contains a return instruction that can be called to return a result.But when I write another program that puts an output program in a for loop, it still has only one result on the CAS or HOME interface. Why is that?Theoretically, I've called the output program multiple times, and it should produce multiple results.
|
|||
10-25-2020, 06:47 PM
Post: #2
|
|||
|
|||
RE: How to write a program to output multiple results
The approach of the Prime built in functions is to return a list. See EIGENVV for example.
RETURN {val1, val2, val3} You can also dynamically build the list with an arbitrary number of values with the CONCAT function. Thibault - not collector but in love with the few HP models I own - Also musician : http://walruspark.co |
|||
10-26-2020, 03:35 AM
Post: #3
|
|||
|
|||
RE: How to write a program to output multiple results
(10-25-2020 06:47 PM)pinkman Wrote: The approach of the Prime built in functions is to return a list. See EIGENVV for example. Thank you for your guidance. I will learn this skill |
|||
10-26-2020, 10:27 AM
(This post was last modified: 10-26-2020 10:55 AM by pinkman.)
Post: #4
|
|||
|
|||
RE: How to write a program to output multiple results
Here is a small example. FIBO calculates the Fibonacci values between two numbers and returns the values as a list.
Usage example: FIBO(50, 250) Returns: {55,89,144,233} Code:
Thibault - not collector but in love with the few HP models I own - Also musician : http://walruspark.co |
|||
10-26-2020, 11:32 AM
Post: #5
|
|||
|
|||
RE: How to write a program to output multiple results
(10-26-2020 10:27 AM)pinkman Wrote: Here is a small example. FIBO calculates the Fibonacci values between two numbers and returns the values as a list. I recreated the FIBO program on my Prime, and now I've learned to return multiple values, thank you very much! |
|||
10-26-2020, 12:49 PM
Post: #6
|
|||
|
|||
RE: How to write a program to output multiple results
(10-26-2020 10:27 AM)pinkman Wrote: ret := CONCAT(ret, c); CONCAT builds a new list, combining ret and c, using time of O(len(ret) + len(c)) We might speed it up by building nest-list, then flatten it. ret := {{}}; // list of list ... ret[0] := {ret[0], c}; // inplace update, not building long list (assumed 0-based indexing) ... return flatten(ret); Example: XCas> lst := [[]] XCas> lst[0] := [lst[0], [1,2,3]] XCas> lst[0] := [lst[0], [4,5,6]] XCas> flatten(lst) [1,2,3,4,5,6] |
|||
10-26-2020, 01:23 PM
Post: #7
|
|||
|
|||
RE: How to write a program to output multiple results
Yes good approach, but there is no flatten function on the Prime.
I also wanted to avoid using CAS functions in a Home HPPL program, because of the isolation of both environments. Thibault - not collector but in love with the few HP models I own - Also musician : http://walruspark.co |
|||
10-26-2020, 02:51 PM
Post: #8
|
|||
|
|||
RE: How to write a program to output multiple results
There is not a flatten built-in, but you will find a couple of LIST FLATTEN functions here:
https://www.hpmuseum.org/forum/thread-9411.html Stephen Lewkowicz (G1CMZ) https://my.numworks.com/python/steveg1cmz |
|||
10-26-2020, 06:54 PM
Post: #9
|
|||
|
|||
RE: How to write a program to output multiple results
(10-26-2020 01:23 PM)pinkman Wrote: Yes good approach, but there is no flatten function on the Prime.We should request it ! I was looking at XCas source misc.cc, I discovered there is an undocumented flatten1 XCas> flatten1([1,2,3,[4,[5]]]) → [1,2,3,4,[5]] The code also explained why flatten is so fast. It only scan the list 1 time, adding 1 element at a time, with time complexity of O(n) We could emulate the functionality of flatten, but time complexity is O(n^2) Here is a simple implementation. (note that concat is needed, which kills performance.) Code: flat(lst) := { |
|||
10-27-2020, 04:55 AM
Post: #10
|
|||
|
|||
RE: How to write a program to output multiple results
(10-26-2020 06:54 PM)Albert Chan Wrote:(10-26-2020 01:23 PM)pinkman Wrote: Yes good approach, but there is no flatten function on the Prime.We should request it ! The discussion is a little difficult for me to understand, so I will continue my study |
|||
« Next Oldest | Next Newest »
|
User(s) browsing this thread: 4 Guest(s)