用ABAP编程破解世界上最难数独游戏

本文介绍了一位芬兰数学家设计的世界最难数独游戏,并探讨如何通过ABAP编程来解决这一挑战。利用ABAP的编程逻辑和数据结构,可以对数独谜题进行分析和解答。
摘要由CSDN通过智能技术生成

前几天刷人人的时候,偶然看到了一个帖子: “芬兰数学家因卡拉花费3个月设计出了世界上迄今难度最大的数独游戏。”下图是这个数独的截图:

游戏规则就是: 玩家需要根据9×9格子内的已知数字,推理出剩余空格的数字,并满足每一行、每一列、每一个粗线宫(3×3)内的数字,均含1到9,且不重复。

于是乎,作为一个开发人员的我,对这种“最难”之类的字眼比较敏感的,果断写个程序来运算它。
大概的思路是计算当前的九宫格中“最容易”判断的格子,然后列举出这个格子的各种可能,然后用递归法运算。程序代码见下:
*&———————————————————————*
*& Report  ZTEST11_RAY                                                 *
*&                                                                     *
*&———————————————————————*
*&  author       :   woss
*&  date         :   2012/07/05
*&  description  :   ##########                                        *
*&                                                                     *
*&———————————————————————*
REPORT  ZTEST11_RAY                             .
DATA: BEGIN OF WA_CELLS,
C1R1 TYPE I,
C1R2 TYPE I,
C1R3 TYPE I,
C1R4 TYPE I,
C1R5 TYPE I,
C1R6 TYPE I,
C1R7 TYPE I,
C1R8 TYPE I,
C1R9 TYPE I,
C2R1 TYPE I,
C2R2 TYPE I,
C2R3 TYPE I,
C2R4 TYPE I,
C2R5 TYPE I,
C2R6 TYPE I,
C2R7 TYPE I,
C2R8 TYPE I,
C2R9 TYPE I,
C3R1 TYPE I,
C3R2 TYPE I,
C3R3 TYPE I,
C3R4 TYPE I,
C3R5 TYPE I,
C3R6 TYPE I,
C3R7 TYPE I,
C3R8 TYPE I,
C3R9 TYPE I,
C4R1 TYPE I,
C4R2 TYPE I,
C4R3 TYPE I,
C4R4 TYPE I,
C4R5 TYPE I,
C4R6 TYPE I,
C4R7 TYPE I,
C4R8 TYPE I,
C4R9 TYPE I,
C5R1 TYPE I,
C5R2 TYPE I,
C5R3 TYPE I,
C5R4 TYPE I,
C5R5 TYPE I,
C5R6 TYPE I,
C5R7 TYPE I,
C5R8 TYPE I,
C5R9 TYPE I,
C6R1 TYPE I,
C6R2 TYPE I,
C6R3 TYPE I,
C6R4 TYPE I,
C6R5 TYPE I,
C6R6 TYPE I,
C6R7 TYPE I,
C6R8 TYPE I,
C6R9 TYPE I,
C7R1 TYPE I,
C7R2 TYPE I,
C7R3 TYPE I,
C7R4 TYPE I,
C7R5 TYPE I,
C7R6 TYPE I,
C7R7 TYPE I,
C7R8 TYPE I,
C7R9 TYPE I,
C8R1 TYPE I,
C8R2 TYPE I,
C8R3 TYPE I,
C8R4 TYPE I,
C8R5 TYPE I,
C8R6 TYPE I,
C8R7 TYPE I,
C8R8 TYPE I,
C8R9 TYPE I,
C9R1 TYPE I,
C9R2 TYPE I,
C9R3 TYPE I,
C9R4 TYPE I,
C9R5 TYPE I,
C9R6 TYPE I,
C9R7 TYPE I,
C9R8 TYPE I,
C9R9 TYPE I,
END OF WA_CELLS.
DATA: BEGIN OF WA_VAL,
VAL TYPE I,
END OF WA_VAL.
DATA: IT_VAL LIKE TABLE OF WA_VAL.
DATA: G_FLAG TYPE C.
TYPE-POOLS ole2  .
DATA: l_filename1(100)  TYPE c.
DATA: v_excel  TYPE ole2_object.     ” Excel object
DATA: l_books  TYPE ole2_object,     ” list of workbooks
l_book   TYPE ole2_object,     ” workbook
sheet    TYPE ole2_object,     ” Worksheet object
range    TYPE ole2_object,
cell     TYPE ole2_object,
row      TYPE ole2_object,
columns TYPE ole2_object,
borders  TYPE ole2_object.
DATA: t_books  TYPE ole2_object,     ” list of workbooks
t_book   TYPE ole2_object,     ” workbook
t_sheet  TYPE ole2_object,     ” Worksheet object
a_range  TYPE ole2_object,
t_range  TYPE ole2_object.
DATA: v_application TYPE ole2_object.
DATA: g_display  TYPE c.
**———————————————————————*
**                          选择屏幕参数                               *
**———————————————————————*
SELECTION-SCREEN BEGIN OF BLOCK BK2 WITH FRAME TITLE TEXT-002.
PARAMETERS: P_FILE LIKE RCGFILETR-FTFRONT OBLIGATORY DEFAULT ‘C:\Users\Wosslr\Desktop\最难九宫格.xls’.
SELECTION-SCREEN END OF BLOCK BK2.
**———————————————————————*
**                A T - S E L E C T I O N - S C R E E N
**———————————————————————*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
CALL FUNCTION ‘KD_GET_FILENAME_ON_F4′
EXPORTING
STATIC    = ‘X’
MASK      = ‘,*.XLS,*.xls,*.XLSX,*.xlsx.’
CHANGING
FILE_NAME = P_FILE.
**———————————————————————*
**                S T A R T - O F - S E L E C T I O N
**———————————————————————*
START-OF-SELECTION.
PERFORM INITIAL_CELLS.
PERFORM FILL_CELL CHANGING WA_CELLS G_FLAG.
IF G_FLAG EQ ‘X’.
PERFORM DISPLAY.
ENDIF.
*&———————————————————————*
*&      Form  INITIAL_CELLS
*&———————————————————————*
*       text
*———————————————————————-*
*  –>  p1        text
*  <–  p2        text
*———————————————————————-*
FORM INITIAL_CELLS .
g_display = ‘X’.
FIELD-SYMBOLS : <fs> TYPE ANY.
DATA: l_fieldname TYPE fieldname.
DATA: L_COL TYPE I,
L_ROW TYPE I,
L_N_COL TYPE N,
L_N_ROW TYPE N.
PERFORM startexcel_new using P_FILE ‘Sheet1′.
DO 9 TIMES.
L_COL = SY-INDEX.
L_N_COL = L_COL.
DO 9 TIMES.
L_ROW = SY-INDEX.
L_N_ROW = L_ROW.
CONCATENATE ‘C’  L_N_COL ‘R’ L_N_ROW INTO l_fieldname.
ASSIGN COMPONENT l_fieldname OF STRUCTURE WA_CELLS TO <fs>.
PERFORM READ_TMP_PROPERTY_EXCEL
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值