Skip to content

Latest commit

 

History

History
205 lines (143 loc) · 7.1 KB

File metadata and controls

205 lines (143 loc) · 7.1 KB

Documentation for the devil package.


Developer's Ideas Library


Version information:

  • Package: devil
  • Version: 0.0.7
  • Generated: 2025-08-05T09:11:25
  • Author(s): Any Developers
  • Maintainer(s): [Yutaka Morioka],[Hiroki Yamanobe],[Ryo Nakaya]
  • License: MIT
  • File SHA256: F*2B05572EDB5298BD1FF06CAA9B96FF1FD9143A7404FEB68CAAECB8BF07CAC21B for this version
  • Content SHA256: C*DA6358120C9BB14B45825D89658A0FE9C64C714D0B9335389DAC10A1AE3E918F for this version

The devil package, version: 0.0.7;


Welcome to Developer's Ideas Library(DEVIL)

The package is a library of any ideas at any stages from anyone. PharmaForest will maintain the package obtaining ideas from developers. Contact PharmaForest members if you are interested. Purposes of adding devils(components of the package) can be like joking(for fun), trial, showing-off, or recruiting members for further development by showing POC for someone who don't have github account or not faimliar yet with SAS packages framework but is interested in sharing.



Required SAS Components:

  • Base SAS Software

Required SAS Packages:

  • misc


SAS package generated by SAS Package Framework, version 20250728


The devil package content

The devil package consists of the following content:

  1. text2morse() function

  2. %chatdms() macro

  3. %hanabi() macro

  4. %life_game() macro

  5. %sudoku_solver() macro

  6. License note


text2morse() function

text2morse is a function that converts text to Morse code. options cmplib=work.f ; is required prior to f1 is used.


%chatdms() macro

This is macro to chat with LLMs(openAI / Google) in SAS DMS(Display Management System) for who cannot afford Viya Copilot. This is actually like Rshiny application which creates window for prompt and you can receive responses from LLMs in log window.

Parameters:

  • provider: openAI / google / anthropic
  • model : please specify(e.g. gemini-1.5-flash, gpt-3.5-turbo)
  • apikey : please input
  • max_tokens : 1024 (default)

%hanabi() macro

This macro is to celebrate something with fireworks!

Parameters - giffile: full path for gif file to create - ite: iteration number from 1 to 151(record number of __color_list)


%life_game() macro

Program : %life_game Description : Simulates Conway's Game of Life in SAS and generates an animated GIF output. Uses a grid of cells initialized randomly or from an input dataset, applies the life game rules iteratively, and visualizes the process as a heatmap animation.

Author : Yutaka Morioka License : MIT

Parameters : outpath - File path to save the output GIF. outfilename - Name of the output GIF file (default: lifegame). seed - Random seed for initial cell generation (default: 777). loop - Number of iterations (animation frames) to simulate (default: 50). xwide - Width of the grid (default: 50). ywide - Height of the grid (default: 50). ds - Optional input dataset to use as the initial grid. If not provided, a random grid will be generated.

Output : Animated GIF file showing the evolution of the Game of Life simulation.

Notes :

  • The initial grid is either randomly generated or taken from the specified dataset.
  • Each cell's state is updated based on the standard rules of Conway's Game of Life.
  • The macro uses SAS hash objects to efficiently access neighbor cells.
  • The animation is rendered using PROC SGPLOT with heatmap visualization.

Usage Example: %life_game(outpath=D:\Users\Example\Output, outfilename=mygame, loop=100, xwide=60, ywide=60);


%sudoku_solver() macro

Here is the explanation of %sudoku_solver.

Sample code

puzzle= : the Sudoku puzzle converted into a SAS dataset (Refer to the following 'prerequisites' section!) outputpath= : the directory where the results are output (LOG file or RTF file when rtfYN=Y) rtfYN= : Default is N. If you change this parameter to Y, an RTF output will be created in 'outputpath'.

%sudoku_solver(
    puzzle=__sudoku__, 
    outputpath=/home/XXXXX/sudoku/, 
    rtfYN=Y
   )

prerequisites

Please convert the Sudoku puzzle you want to solve into a dataset as shown in the example below. (It must be SAS dataset with 9 numeric variables (c1-c9) and 9 observations.) Note: - Fill the blank spaces in the puzzle with 0. - Make sure to name the variables strictly as c1-c9, but the dataset name can be anything.

data sudoku1; input c1-c9 8.; cards; 0 0 2 3 0 0 5 0 0 4 0 0 0 8 0 0 1 0 0 0 9 0 0 4 0 0 6 0 2 0 0 7 0 1 0 8 6 0 0 5 0 9 0 0 3 1 0 3 0 4 0 0 7 0 9 0 0 8 0 0 2 0 0 0 8 0 0 6 0 0 0 9 0 0 7 0 0 1 3 0 0 ;

Other

  • "Sudoku" is a registered trademark of Nikoli. (https://www.nikoli.co.jp/ja/puzzles/sudoku/)
  • The maximum number of backtracks is set to 50,000.
  • This is because most Sudoku puzzles can be solved within 50,000 backtracks.
  • If there is a request to specify the number of backtracks in the macro parameter, I will consider it:)
  • Author: Miyuki Aso
  • Date: 2025-07-25
  • Version: 0.1


License

Copyright (c) [2025] [Yutaka Morioka],[Hiroki Yamanobe],[Ryo Nakaya] Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.